Java 无论我尝试什么,我的框架都是空的

Java 无论我尝试什么,我的框架都是空的,java,swing,user-interface,calculator,Java,Swing,User Interface,Calculator,我再也不能让任何东西出现在我的身体里了,有人能告诉我为什么吗 import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import

我再也不能让任何东西出现在我的身体里了,有人能告诉我为什么吗

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator
{
    private final static int DIMENSION = 400;
    JFrame calcFrame;
    JPanel buttonPanel;
    JButton addButton;
    JButton subButton;
    JButton multButton;
    JButton divButton;
    JPanel resultPanel;
    JLabel resultLable;
    JLabel resultLabel;
    JTextField leftOperand;
    JTextField rightOperand;
    JLabel jlResult;
    JPanel textPanel;

    public Calculator()
    {
        calcFrame = new JFrame();
        calcFrame.setLocation(100, 100);
        calcFrame.setSize(DIMENSION, DIMENSION);
        calcFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        calcFrame.setTitle("Simple Calculator");

        initializeComponents();

        calcFrame.pack();
        calcFrame.setVisible(true);
    }
    public void initializeComponents()
    {
        addButton = new JButton("ADD");
        addButton.setName("addButton");

        subButton = new JButton("SUB");
        subButton.setName("subButton");

        multButton = new JButton("MULT");
        multButton.setName("multButton");

        divButton = new JButton("DIV");
        divButton.setName("divButton");

        resultLabel = new JLabel(" ");
        resultLabel.setName("resultLabel");

        jlResult = new JLabel("Result = ");
        jlResult.setName("jlResult");

        leftOperand = new JTextField(10);
        leftOperand.setName("leftOperand");

        rightOperand = new JTextField(10);
        rightOperand.setName("rightOperand");     


        Panel();
        addActionListeners();
    }
    public void Panel()
    {
        buttonPanel = new JPanel();
        resultPanel = new JPanel();
        textPanel = new JPanel();

        buttonPanel.add(addButton);
        buttonPanel.add(subButton);
        buttonPanel.add(multButton);
        buttonPanel.add(divButton);
        resultPanel.add(jlResult);
        resultPanel.add(resultLable);
        textPanel.add(leftOperand);
        textPanel.add(rightOperand);

        calcFrame.add(buttonPanel, BorderLayout.PAGE_END);
        calcFrame.add(resultPanel, BorderLayout.WEST);
        calcFrame.add(textPanel, BorderLayout.PAGE_START);

    }

    public void addActionListeners()
    {
        multButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) 
            {
                multClicked();
            }
        });
        divButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) 
            {
                divClicked();
            }
        });
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) 
            {
                addClicked();
            }
        });
        subButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) 
            {
                subClicked();
            }
        });
    }

    public JFrame getFrame()
    {
        return calcFrame;
    }

    public static void main(String[] args)
    {
        Calculator calc = new Calculator();
    }
}

代码中的这个问题就是这一行

resultPanel.add(resultLable);
在initializeComponents()方法中。您没有初始化
结果表
。相反,您已初始化

 resultLabel = new JLabel(" ");
 resultLabel.setName("resultLabel");

// You can also do this to initialize a label with a string
// resultLabel = new JLabel("resultLabel");
您可以更改
resultPanel.add(resultLable)
resultPanel.add(resultLabel)


或者在方法
Panel()
中的
initializeComponents()

中初始化
resultable
。更改
resultPanel.add(resultable)
resultPanel.add(resultLabel)<代码>结果表
未初始化,因此它引发了nullpointerexception。您好,欢迎使用StackOverflow。1) 请拿着这本书读一读。2) 不要复制粘贴相同的文本4-5次以消除文本代码比率错误来发布您的问题,描述错误是什么,在它不再显示任何内容之前您到底做了什么,等等,您提供的信息越多,就越容易帮助您。3) 正确缩进您的代码(我已经修复了它),这有助于我们更容易地检测错误(您也可以防止错误)。4)
pack()
正在覆盖
setSize(…)返回的大小,请删除其中1个。5) 方法名称应以动词开头,并以第一个单词
小写
开头。有关此项的详细信息,请查看。这一点以及(3)将极大地帮助您提高代码质量,减少错误数量和代码可读性。@Frakcool“4)pack()将覆盖setSize(…)返回的大小,删除其中1个。删除第2个。应避免设置组件的大小,而应使用更大的字体、插图等使组件(实际上)更大。@AndrewThompson我发誓我已经写了“删除其中的一个(建议第二个),可能我被自己完成编译的代码分心了,忘了这一点,谢谢你补充我的评论:)