如何根据用户输入启用/禁用java中的文本框?

时间:2014-01-27 17:43:53

标签: java eclipse swing

我试图在JOption窗格上启用/禁用文本框,具体取决于用户输入,下面是我的代码;

    String input1, input2, input3, input4, input5;

    input1 = "Input value 1";
    input2 = "Input value 2";
    input3 = "Input value 3";
    input4 = "Input value 4";
    input5 = "Input value 5";

    field2.setEnabled(false); // this part is not working
    field3.setEnabled(false); // this part is not working
    field4.setEnabled(false); // this part is not working
    field5.setEnabled(false); // this part is not working

    JTextField field1 = new JTextField();
    JTextField field2 = new JTextField();
    JTextField field3 = new JTextField();
    JTextField field4 = new JTextField();
    JTextField field5 = new JTextField();
    Object[] message = {
            input1, field1, 
            input2, field2, 
            input3, field3,
            input4, field4,
            input5, field5,

    };
    int option = JOptionPane.showConfirmDialog(null, message, "Enter all your values", JOptionPane.OK_CANCEL_OPTION);
    if (option == JOptionPane.OK_OPTION)
    {
      String value1 = field1.getText();
      String value2 = field2.getText();
      String value3 = field3.getText();
      String value4 = field4.getText();
      String value5 = field5.getText();


    }

    if (value1 > 0 || value1< 8) { // this part is not working
        input1 = "Wrong input for value 1";

    }else{
        field2.setEnabled(false);
        field3.setEnabled(false);
        field4.setEnabled(false);
        field5.setEnabled(false);

    }

基本上,我想要的是在启动时禁用文本框1的所有框,如果用户键入0到8之间的值,那么它将启用下一个框,否则它应该为它们提供错误“错误输入值1“。我将需要为所有文本框执行此操作,并在使用时提供正确的答案,它应启用下一个框。

我希望我已正确解释了我的问题,如果没有,请告诉我。

3 个答案:

答案 0 :(得分:0)

一个问题是,在将enabled设置为false后,您将重新创建对象field1,field2,field3 ....禁用它们后,请勿重新创建对象。 看起来这些对象的初始创建(field1 ... field5)未在您的示例中显示。

答案 1 :(得分:0)

最好使用更改侦听器和更改事件处理程序,检查值以及启用/取消使用jTextField。

这是一个例子: sample Code

 JTextField myTextField = new JTextField();
        myTextField.getDocument().addDocumentListener(new DocumentListener() {
            public void changedUpdate(DocumentEvent e) {
                // Do something
            }
            public void removeUpdate(DocumentEvent e) {
                // Do something
            }
            public void insertUpdate(DocumentEvent e) {
                // Do something
            }
        });

答案 2 :(得分:0)

String input1, input2, input3, input4, input5;

input1 = "Input value 1";
input2 = "Input value 2";
input3 = "Input value 3";
input4 = "Input value 4";
input5 = "Input value 5";

JTextField field1 = new JTextField();
JTextField field2 = new JTextField();
JTextField field3 = new JTextField();
JTextField field4 = new JTextField();
JTextField field5 = new JTextField();

//move this after creating the fields
field2.setEnabled(false);
field3.setEnabled(false); 
field4.setEnabled(false); 
field5.setEnabled(false);

Object[] message = {
        input1, field1, 
        input2, field2, 
        input3, field3,
        input4, field4,
        input5, field5,

};
int option = JOptionPane.showConfirmDialog(null, message, "Enter all your values", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION)
{
  String value1 = field1.getText();
  String value2 = field2.getText();
  String value3 = field3.getText();
  String value4 = field4.getText();
  String value5 = field5.getText();


  field1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent e) {

           if (Integer.parseInt(value1) > 0 || Integer.parseInt(value1) < 8) { 
                input1 = "Wrong input for value 1";

           }else{
                field2.setEnabled(false);
                field3.setEnabled(false);
                field4.setEnabled(false);
                field5.setEnabled(false);
           }
       }
  } 
}