Java Swing简单程序

标签 java swing types try-catch

我是一名新的 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/

相关文章:

java - 使用 webservice 调用某些使用资源文件的 java 应用程序方法时出现问题

java - 在 HTMLEditorKit/JEditorPane 中强制使用 <strong> 而不是 <b>

java - 从字节数组转换和显示图像

c - 运行 for 循环时出现奇怪的输出

java - 如何将文件重命名为另一个文件系统?

java - 从 ShutdownHook 调用非静态方法

java - 静态引用被清除——如果未使用,Android 是否会在运行时卸载类?

java - 与 BufferedImage 协调越界异常

Scala重写F有界多态中子类型的类型参数

C++ 类方法声明返回错误