gpt4 book ai didi

java - 从 JPanel/JFrame 的 JTextfields 添加到商店

转载 作者:行者123 更新时间:2023-12-01 10:50:55 25 4
gpt4 key购买 nike

我开发了一个商店类,其中包含来自员工和人员类的信息。

在我的 Controller 类中,我向商店添加了一名员工:

Employee e1 = new Employee("Dave", 'M', new Date(01,1,80), "01", new Date(02,2,2002));

我想做的是使用 JPanel/JFrame 中键盘输入的信息向商店添加更多员工。我开发了 JTextfields 和 JButtons。

我已经定义了按钮和字段:

JButton enterButton;
JTextField name;
JTextField gender;
JTextField dob;
JTextField id;
JTextField startDate;

我已经构建了它们中的每一个,它们都出现在 JPanel 上。我知道我需要添加 actionListener 并按如下方式完成:

myEventHandler h = new myEventHandler();

enterButton.addActionListener(h);
name.addActionListener(h);
gender.addActionListener(h);
dob.addActionListener(h);
id.addActionListener(h);
startDate.addActionListener(h);

然后我创建了一个类:

private class myEventHandler implements ActionListener {

public void actionPerformed(ActionEvent e) {

但就在此时我的代码崩溃了:

if(e.getSource()==enterButton) {

如何才能单击此 EnterButton 将信息输入到五个 JTextfields 中,并将其作为新的 Employee 添加到我的商店类中?

我已经对此进行了研究,并且我将其作为最后的手段放在这里。非常感谢一些让我重新开始的指示。

最佳答案

既然您已经声明了 JTextField s,您只需要正确使用它们即可创建新的 Employee 。更困难的部分是将字符串正确转换为 Date 。我还建议使用 JFormattedTextField对于带有日期的文本字段。

我用了 substring() Integer.parseInt()将字符串转换为日期。请注意,您必须从月份中减去 1,因为月份从 0 开始计数(因此 0 = 一月)。另外,您还必须从年份中减去 1900,因为它是“年份减去 1900”( Reference )

这是一个示例,Employee -class 只是打印出 JTextArea 的参数(所以我们知道它是正确的)。

输出:

enter image description here

代码:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Example {

JButton enterButton;
JTextField name;
JTextField gender;
JFormattedTextField dob;
JTextField id;
JFormattedTextField startDate;
JTextArea outputArea;

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Example();
}
});

}

public Example() {

JFrame frame = new JFrame();

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
MyEventHandler eventHandler = new MyEventHandler();

enterButton = new JButton("Apply");
enterButton.addActionListener(eventHandler);

name = new JTextField(10);
name.addActionListener(eventHandler);

gender = new JTextField(10);
gender.addActionListener(eventHandler);

dob = new JFormattedTextField(df);
dob.setColumns(10);
dob.addActionListener(eventHandler);

id = new JTextField(10);
id.addActionListener(eventHandler);

startDate = new JFormattedTextField(df);
startDate.setColumns(10);
startDate.addActionListener(eventHandler);

JPanel inputPanel = new JPanel();
inputPanel.add(name);
inputPanel.add(gender);
inputPanel.add(dob);
inputPanel.add(id);
inputPanel.add(startDate);
inputPanel.add(enterButton);

outputArea = new JTextArea();

frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(inputPanel, BorderLayout.NORTH);
frame.getContentPane().add(new JScrollPane(outputArea));

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(frame.getWidth(), 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

private class MyEventHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
new Employee(name.getText(), gender.getText(), getDateOf(dob), id.getText(), getDateOf(startDate));
}
}

@SuppressWarnings("deprecation")
private Date getDateOf(JFormattedTextField field) {
int year = Integer.parseInt(field.getText().substring(6, 10)) - 1900;
int month = Integer.parseInt(field.getText().substring(3, 5)) - 1;
int date = Integer.parseInt(field.getText().substring(0, 2));
return new Date(year, month, date);
}

public class Employee {

public Employee(String name, String gender, Date dob, String id, Date startDate) {
outputArea.append((name + "\n" + gender + "\n" + dob + "\n" + id + "\n" + startDate + "\n"));
}

}

}

关于java - 从 JPanel/JFrame 的 JTextfields 添加到商店,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33914672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com