【发布时间】:2015-01-27 11:13:42
【问题描述】:
我编写了一个简单的 java 应用程序,它根据单击的按钮对数字进行平方和求根。运行它后,控制台显示构建成功,但没有显示任何内容。这是我的代码:
package lab11;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Problem1 extends JFrame implements ActionListener {
int n;
JTextField enter;
JTextField result;
JButton sqrt;
JButton square;
JLabel l1;
JLabel l2;
public static void main(String[] args){
Problem1 exercice = new Problem1();
exercice.setSize(500, 500);
exercice.setVisible(true);
exercice.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
exercice.show(true);
}
public Problem1(){
super("Square Root");
setLayout(new GridLayout(3,2));
l1 = new JLabel("Enter N:");
l2 = new JLabel("Result:");
sqrt = new JButton("SQRT");
square = new JButton("SQUARE");
square.addActionListener(this);
sqrt.addActionListener(this);
n = Integer.parseInt(enter.getText());
add(l1);
add(enter);
add(l2);
add(result);
add(sqrt);
add(square);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == square)
result.setText(String.valueOf(n*n));
if(e.getSource()== sqrt)
result.setText(String.valueOf(Math.sqrt(n)));
}
}
【问题讨论】:
-
我“怀疑”你在
n = Integer.parseInt(enter.getText());有一个例外,因为enter是null(如果不是getText()将返回一个空白String,这是不可能的转换为int) -
JTextField enter应该是JSpinner enter.. -
@MadProgrammer 正确,一旦我将我的项目设置为主类,n 是空指针异常。我添加了仅在 enter.getText() 不为 null 时才解析 n 的条件,但这似乎并没有解决问题。我的主要方法“问题 1 练习 = 新问题();”也遇到了同样的问题。
-
@AndrewThompson 练习将我们限制在 JTextField 中,因为该值必须由用户输入,而不是选择。