为了账号安全,请及时绑定邮箱和手机立即绑定

setContentPane() 和 addActionListener 获取

setContentPane() 和 addActionListener 获取

小怪兽爱吃肉 2021-10-20 14:28:52
import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class Form1 {   private JPanel panel1;   private JButton button1;   public Form1() {       button1.addActionListener(new ActionListener() {          @Override          public void actionPerformed(ActionEvent e) {             System.out.println("Button clicked");          }       });    }    public static void main(String args[]){       JFrame frame = new JFrame("Form 1");       frame.setContentPane(new Form1().panel1);       frame.pack();       frame.setVisible(true);    }}该错误与setContentPanein main 方法有关,然后与actionListener. 我在下面发布了确切的错误。为什么是这样?我使用 IntelliJ IDEA GUI 表单创建器创建了它。Exception in thread "main" java.lang.NullPointerException      at Form1.<init>(Form1.java:12)      at Form1.main(Form1.java:22)
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

在 Java 中,您不能使用未初始化的变量,否则您将收到 NPE。请参阅以下代码,并请阅读 Java 书籍 :)


public class Form1 {

   private JPanel panel1;

   private JButton button1;



   public Form1() {

      panel1 = new JPanel();

      button1 = new JButton1("Press Me");

      panel1.add(button1);

       button1.addActionListener(new ActionListener() {

          @Override

          public void actionPerformed(ActionEvent e) {

             System.out.println("Button clicked");

          }

       });

    }


    public static void main(String args[]){

       JFrame frame = new JFrame("Form 1");

       frame.setContentPane(new Form1().panel1);

       frame.pack();

       frame.setVisible(true);

    }

}


查看完整回答
反对 回复 2021-10-20
?
温温酱

TA贡献1752条经验 获得超4个赞

因此,您将遇到两个导致该错误的问题。您创建一个对象(之后JButton,JPanel在这种情况下),你必须初始化它们。有很多不同的方法可以做到这一点,这取决于您要尝试做什么,但解决您的问题最简单的方法是在构造函数中添加以下几行:


panel1 = new JPanel();

button1 = new JButton();

之后您的代码应该可以正常运行。


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信