我正在学习如何在Java中创建用于按钮单击的事件侦听器。我想要一个面板弹出表单项。我已经在动作监听器的构造函数中构建了面板,但是当它打开时它是空的。我认为只构建这个是有意义的,然后只需在单击按钮时显示它(actionPerformed)。显然不是:)。
以下是我的ActionListener类:
package biz.martyn.budget;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class NewTransaction implements ActionListener {
protected JPanel panel = new JPanel(new GridLayout(0, 1));
public void NewTransaction() {
String [] category = {"Internet", "Clothes", "Rent", "Salary", "Groceries"};
JComboBox combo = new JComboBox(category);
panel.add(combo);
panel.add(new JLabel("Description:"));
JTextField desc = new JTextField();
panel.add(desc);
panel.add(new JLabel("Date:"));
JTextField date = new JTextField();
panel.add(date);
panel.add(new JLabel("Amount:"));
JTextField amount = new JTextField();
panel.add(amount);
}
@Override
public void actionPerformed(ActionEvent arg0) {
int result = JOptionPane.showConfirmDialog(null, panel, "New transaction",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
}
}
以下是我如何附加活动:
JButton newTransactionButton = new JButton("New transaction");
newTransactionButton.addActionListener(new NewTransaction());
toolbar.add(newTransactionButton);
在做这类事情的时候,我很感激有关约定的任何其他建议因为我是初学者,谢谢。
答案 0 :(得分:2)
我在动作监听器的构造函数中构建了面板,但在打开时它是空的
以下......
public void NewTransaction() {
...是一个方法,而不是构造函数。您需要显式调用它,或将其更改为构造函数
public NewTransaction() {