我试图在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“。我将需要为所有文本框执行此操作,并在使用时提供正确的答案,它应启用下一个框。
我希望我已正确解释了我的问题,如果没有,请告诉我。
答案 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);
}
}
}
}