如何尝试使用jtextfield捕获异常?

时间:2019-02-20 16:29:49

标签: java swing exception-handling

我正在制作一个简单的gui,用户必须输入2个随机数字字符串,然后按“完成”按钮将输出这2个字符串。 但是,如何使用try-catch方法做到这一点,以便用户只能使用数字,否则它将捕获异常?

这是我的代码:

import java.awt.event.*;
import javax.swing.*;

public class Panel extends JPanel 
{
    private JTextField field1;
    private JTextField field2;
    private JButton button1;
    private JLabel label1;
    private JLabel label2;

    public Panel() 
    {
        label1 = new JLabel("first string: ");
        label2 = new JLabel("second string: ");
        field1 = new JTextField(38);
        field2 = new JTextField(3);
        button1 = new JButton("done");

        ButtonP buttonP = new ButtonP();
        button1.addActionListener(buttonP);

        this.add(label1);
        this.add(field1);
        this.add(label2);
        this.add(field2);
        this.add(button1);
    }

    private class ButtonP implements ActionListener 
    {   
        public void actionPerformed(ActionEvent e)  
        {
            System.out.println("String 1 " + field1.getText() + " and string 2 " + field2.getText());
        }
    }
}

预先感谢

2 个答案:

答案 0 :(得分:0)

//You save yor recieved string from textfield and try to convert it to an integer
//If is not convertable, it throws an exception and prints in console the error
String string1 = field1.getText();
int myInteger = 0;
try {
    myInteger = Integer.parseInt(string1);
} catch(Exception e){
    System.out.println("Invalid input. Not an integer");
    e.printStackTrace();
}

希望有帮助。问候。

答案 1 :(得分:0)

您在这里有两个选择。第一个也是推荐的一个是use a JFormattedTextField,以消除获得NumberFormatException的机会。另外,它更加人性化。

第二种选择是捕获NumberFormatException,并在捕获时向用户添加一种“错误”消息(不是那么用户友好),并告诉他提供正确的输入。然后,他未按一下字母,我们回到了错误消息。