Я изучаю, как создавать прослушиватели событий в Java для нажатия кнопки. Я хочу, чтобы панель всплывала с элементами формы. Я создал панель в контрукторе исполнителя действия, но при ее открытии она пуста. Я думал, что имеет смысл только построить этот, а затем просто показать его, когда нажимается кнопка (actionPerformed). Очевидно, что нет :)Почему мой JPanel пуст после нажатия кнопки?
Ниже мой 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);
Я бы признателен за любые дополнительные консультации по конвенциям, делая это я вроде начинаю, спасибо.
Используйте [ 'CardLayout'] (http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout .html), как показано в [этом ответе] (http://stackoverflow.com/a/5786005/418556). –