有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当JTextField内容不等于某个int时,java显示消息

我正在研究如何在用户未在JTextField中键入数字7时显示消息对话框:

enter image description here

这是我在按钮单击事件中尝试的代码:

    try {
        Double user_input = Double.parseDouble(myTextField.getText());
         while (user_input !=7) {
             JOptionPane.showMessageDialog(null, "Please type number 7","Error", JOptionPane.ERROR_MESSAGE);
    }
    } catch (Exception e) {
    }

共 (2) 个答案

  1. # 1 楼答案

    我试过你的密码。如果我在JTextField中键入的数字不是7,它就可以工作。如果我键入字母,弹出警告将不会显示。我认为当你输入字母而不是数字时,它不起作用

    事情是这样的:try ... catch块用于捕获exception。如果键入数字,double.parseDouble将起作用,因此try块中没有要捕获的exception,如果while中的条件不满足,您将看到警告消息

    如果您键入字母,double.parseDouble将引发异常,因为不允许将字母转换为双精度。它不会移动到下一行(while循环),而是跳转到catch块来处理异常,但您没有指定如何执行,并且不会看到任何警告消息

    因此,解决方案很简单:向catch块添加一个操作,以便在double.parseDouble抛出异常时执行某些操作,例如显示一条消息:

    try
    {
        Double user_input = Double.parseDouble(jTextField1.getText());
        while (user_input != 7)
        {
        JOptionPane.showMessageDialog(null, "Please type number 7", "Error", JOptionPane.ERROR_MESSAGE);
        break;
        }
    }
    catch (Exception e)
    {
        JOptionPane.showMessageDialog(null, "Please type numbers", "Error", JOptionPane.ERROR_MESSAGE);
    }
    

    您可能会注意到,通过使用while,警告消息会一直显示,因为输入值不是7的条件总是true。因此,将if更改为@Hades answer或添加break使其仅显示1次

    我更喜欢if

  2. # 2 楼答案

    向按钮添加事件侦听器对我来说很有效

    public static void main(String[] args) {
        {  
            final JFrame f= new JFrame("TextField Example");  
            final JTextField textField;  
            textField=new JTextField("");  
            textField.setBounds(50,150, 200,30);  
            f.add(textField);  
            f.setSize(400,400);  
            f.setLayout(null);  
            f.setVisible(true); 
            JButton b=new JButton("Click Here");  
            b.setBounds(50,100,95,30);  
            b.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    int value = Integer.parseInt(textField.getText());
                    if(value!=7) {
                        JOptionPane.showMessageDialog(f, "Number should be 7.","Dialog",JOptionPane.ERROR_MESSAGE);
                    }
                    
                }
            });
            f.add(b);  
            f.setSize(400,400);  
            f.setLayout(null);  
            f.setVisible(true);   
        }  
    }