如何访问main()中非静态的panel1


public class task1 extends JFrame{
private JTextField firstnameTextField;
private JTextField surnameTextField;
private JTextField emailTextField;
private JButton submitButton;
private JPanel panel1;

这一部分的意思是没有出现一个消息,用户输入说提交,但只有空白窗口弹出

public task1() {
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
JOptionPane.showMessageDialog(panel1,
String.format(
"You form has been submitted with the following data: n" +
"First name: %0$s n" +
"Surname: %1$s n" +
"Email: %2$s",
firstnameTextField.getText(), surnameTextField.getText(), emailTextField.getText()));
}
});
}

panel1未被识别,我知道这是因为它在静态方法中是非静态变量,但不确定如何更正此

public static void main(String[] args) {
task1 frame = new task1();
frame.add(panel1);
frame.setVisible(true);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();

}
}

将GUI构建逻辑移到构造函数中,它无论如何都不属于main

public task1() {
panel1 = new JPanel();
add(panel1);
submitButton.addActionListener(new ActionListener() { … });
}

然而,这仍然缺少对组件进行有意义的初始化。

最新更新