Java Swing GUI错误Null指针

时间:2016-12-20 00:15:49

标签: java swing user-interface intellij-idea

您好我正在使用我的java代码创建一个Windows应用程序,但我在使用swing GUI时出现问题。最后,我试图制作一个面板,并为您可以运行的不同报告提供一些选项。现在,我只是想让我的面板弹出一个带有警报的按钮。这是我的代码。由于这是intellij IDEA,因此并不是GUI的任何代码,而是在.form文件中。我想在JButton按钮上添加一个关于hi的事件监听器。我得到的错误是空指针执行。我究竟做错了什么?在此先感谢。

package com.project.go;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * Created by Joe on 12/16/2016.
 */
public class App {
private JButton button;
private JPanel panelMain;
private JTextPane MenuWelcome;
private JComboBox pullDownBox;
private JButton Exit;
private JTextArea DateField;

public static void main(String[] args) {
    JButton button = new JButton("run");
    JFrame frame = new JFrame("App");
    frame.setContentPane(new App().panelMain);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
    new App();

}

public App() {
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "hi");
        }
    });
}

private void createUIComponents() {
    // TODO: place custom component creation code here
}
}

1 个答案:

答案 0 :(得分:2)

问题是你正在调用你没有创建的panelMain实例:

frame.setContentPane(new App().panelMain);

您需要先实例化:

private JPanel panelMain;

也许你可能想要使用encapsulation,我相信这是一种很好的做法。