0

我想创建这个代码:用户输入一个数值,如果他输入了字符,它将抛出异常,该字段将停止工作,然后在用户关闭新框架后显示另一个框架并显示错误消息,一切都恢复原状这是否意味着该领域将再次发挥作用!我设法使该领域停止工作,但我不知道用户是否关闭了新框架!这是我的尝试

public void keyReleased(KeyEvent event) {

try{
double l,h,w;
l=Double.parseDouble(input_length.getText());
w=Double.parseDouble("0"+input_width.getText());
h=Double.parseDouble("0"+input_width.getText());
}

catch(NumberFormatException a){


input_length.setEditable(false);
input_height.setEditable(false);
input_width.setEditable(false);

JFrame ErrorFrame = new JFrame("Error");
JPanel content = new JPanel(); ;
ErrorFrame.setContentPane(content);

ErrorFrame.setSize      (350, 150);
ErrorFrame.setResizable (false);
ErrorFrame.setLocation  (FRAME_X_ORIGIN, 250);

content.setLayout(new FlowLayout());
JLabel text = new JLabel(" ERROR ! please Enter number only ",JLabel.CENTER);
text.setFont(new Font("Arial", Font.PLAIN, 20));
text.setForeground(Color.red);
content.add(text);
ErrorFrame.setVisible(true);

setDefaultCloseOperation(ErrorFrame.EXIT_ON_CLOSE);
int op = ErrorFrame.getDefaultCloseOperation();

if(op == 1 ){
input_length.setEditable(true);
input_height.setEditable(true);
input_width.setEditable(true);}

}
}
4

2 回答 2

2

1)。不要将 newJFrame用于错误消息 - 使用JDialog Here is how

2)。h=Double.parseDouble("0"+input_width.getText());我认为你的意思是input_height.getText()这里,不是input_width.getText()

3)。显示您的错误对话框后,只需清除您的文本字段 - 没关系。当用户关闭它时 - 他会看到它们是空的。

于 2012-05-11T11:30:16.337 回答
1
  1. 如果您选择模式对话框来显示错误消息,则无需更改字段的可编辑状态。
  2. 就我个人而言,如果每次我打错字时都显示一个对话框,我会非常恼火。例如,在无效输入时将文本字段的背景颜色更改为红色,并禁用“确定”按钮(或作为用户指示您已完成编辑的任何机制)对 IMO 更友好。您甚至可以在面板中显示指示错误的标签,或工具提示,...。
  3. 如果您想对文本字段中的文本更新做出反应,我还建议您使用 aDocumentListener而不是 aKeyListener

关于为什么我建议选择另一种机制来通知用户错误的示例:我在文本字段中粘贴了一个无效值(例如3x456),然后弹出一个对话框。现在我想使用箭头键导航到错误并更正它。这意味着我必须向左导航 3 个位置才能删除x. 如果我使用箭头键(也是键),我将在导航期间再看到 3 次此对话框。

于 2012-05-11T12:06:00.870 回答