gpt4 book ai didi

java - 为什么单击按钮后我的 JPanel 为空?

转载 作者:行者123 更新时间:2023-12-02 03:20:56 24 4
gpt4 key购买 nike

我正在学习如何在 Java 中为按钮单击创建事件监听器。我想要一个弹出带有表单项的面板。我已经在 Action 监听器的构造函数中构建了面板,但打开时它是空的。我认为只构建这个,然后在单击按钮(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);

在做这类事情时,我很感激有关约定的任何其他建议,因为我是初学者,谢谢。

最佳答案

I've built the panel in the action listener's contructor, but it's empty when it opens

以下...

public void NewTransaction() {

...是一个方法,而不是构造函数。您需要显式调用它,或者将其更改为构造函数

public NewTransaction() {

关于java - 为什么单击按钮后我的 JPanel 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625752/

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