我是一名新的 Java 程序员,我一直在尝试设置一个简单的 Swing 程序,该程序允许用户将两个整数输入到 JTextFields 中,当单击“添加”JButton 时,两个数字会相加,并且sum 在 JLabel 中输出。
这个我可以处理,但是,我遇到的困难是能够设置两个 JTextField 以将无效数字视为零。例如,如果输入字符“x”或“xxx”,则出于添加目的,这将导致该 JTextField 的值为 0。到目前为止,我已经使用了 try/catch 和 if/else 语句,但没有成功。在过去的两天里,我还在互联网上搜索了几个小时,寻找这个问题的一些解决方案,但没有结果。
任何帮助将不胜感激!下面列出了我到目前为止的代码...
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Adder extends JPanel implements ActionListener {
JButton addBut = new JButton("Add");
JTextField field1 = new JTextField("Number 1"),
field2 = new JTextField("Number 2");
JLabel numSum = new JLabel("=");
Adder() {
this.setPreferredSize(new Dimension(299, 43));
addBut.addActionListener(this);
setLayout(new FlowLayout());
add(field1);
add(field2);
add(numSum);
add(addBut);
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource().equals(addBut)){
try {
double one = Double.parseDouble(field1.getText());
double two = Double.parseDouble(field2.getText());
numSum.setText("" + (one + two));
}
catch(Exception ex) {
}
}
else {
field1.setText(" ");
field2.setText(" ");
numSum.setText("");
}
}
public static void main(String[] args){
JFrame jf=new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Adder x = new Adder();
jf.add(x);
jf.pack();
jf.setVisible(true);
}
}
最佳答案
使用 JFormattedTextFiled 并将 NumberFormat 设置为仅允许有效数字。
或者在你的代码中添加一些抛出异常的处理
double one = Double.parseDouble(field1.getText());
double two = Double.parseDouble(field2.getText());
显示一条消息,指出您的 catch block 中的一两个错误。
关于Java Swing简单程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5087647/