我的程序有问题。我试图在文本字段中放置一个整数。这是我的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseEvent.*;
public class GradingSystem extends JFrame{
public GradingSystem(){
super("Grading System");
JLabel pre = new JLabel ("PRELIM GRADE: ");
final JTextField pre1 = new JTextField(10);
JLabel mid = new JLabel("MIDTERM GRADE: ");
final JTextField mid1 = new JTextField(10);
JLabel fin = new JLabel ("FINAL GRADE: ");
final JTextField fin1 = new JTextField(10);
JLabel ave = new JLabel("AVERAGE: ");
final JTextField ave1 = new JTextField(10);
JButton calculate = new JButton("CALCULATE");
FlowLayout flo = new FlowLayout();
setLayout(flo);
add(pre);
add(pre1);
add(mid);
add(mid1);
add(fin);
add(fin1);
add(ave);
add(ave1);
add(calculate);
setSize(315,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
calculate.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
int i1 = Integer.parseInt(pre1.getText());
int i2 = Integer.parseInt(mid1.getText());
int i3 = Integer.parseInt(fin1.getText());
int i4 = Integer.parseInt(ave1.getText());
i4 = (i1 + i2 + i3) / 3;
ave1.setText(String.valueOf(i4));
}catch(Exception ex){
}
}
});
}
public static void main(String[] a){
GradingSystem gs = new GradingSystem();
}
}
我尝试ave1.setText(String.valueOf(i4));
出现在文本字段中,但它赢了。
我究竟做错了什么?
答案 0 :(得分:1)
你的问题就在这一行。
int i4 = Integer.parseInt(ave1.getText());
据推测,当您点击"计算"时,ave1
中没有值,因此该行将抛出异常,并且永远不会到达它下面的行。
从代码中删除该行,并将单词int
添加到其下方的行中。
int i4 = (i1 + i2 + i3) / 3;
作为一般规则,一个空的捕获块,例如你正在使用
的块catch(Exception ex){
}
是一个真正令人难以置信的想法;因为这意味着你不会在抛出异常时看到问题所在。永远不要这样做。
答案 1 :(得分:0)
只有在单击“计算”按钮时,才会在文本字段中看到值。只有在单击“计算”按钮时,才会填充该文本字段,因为您在该按钮上定义了动作侦听器。
如果您需要默认值10,那么您可以执行以下操作:
final JTextField ave1 = new JTextField("10");//or not yet calculated or something on those lines
使用整数参数,java doc说:
Constructs a new empty <code>TextField</code> with the specified
* number of columns.
* A default model is created and the initial string is set to
* <code>null</code>.
*
* @param columns the number of columns to use to calculate
* the preferred width; if columns is set to zero, the
* preferred width will be whatever naturally results from
* the component implementation
*/