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我发誓我已经写了“删除其中的一个(建议第二个),可能我被自己完成编译的代码分心了,忘了这一点,谢谢你补充我的评论:)