我想创建此代码: 用户输入一个数值,如果他输入了字符,它将抛出异常 该字段将停止工作,然后显示另一个框架并显示错误消息 用户关闭新框架后,一切都恢复原状 这意味着该领域将再次运作! 我设法使该字段停止工作,但我不知道用户是否关闭了新框架! 这是我的尝试
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);}
}
}
答案 0 :(得分:2)
1)。不要将新的JFrame
用于错误消息 - 请使用JDialog
Here is how
2)。 h=Double.parseDouble("0"+input_width.getText());
我认为您的意思是input_height.getText()
,而不是input_width.getText()
3)。显示错误对话框后,只需清除文本字段即可 - 没关系。当用户关闭它时 - 他会看到它们是空的。
答案 1 :(得分:1)
DocumentListener
代替KeyListener
为什么我建议选择其他机制来通知用户错误的示例:
我在文本字段中粘贴了无效值(例如3x456
)并弹出一个对话框。现在我想使用我的箭头键导航到错误并更正它。这意味着我必须向左导航3个位置才能删除x
。如果我使用我的箭头键(也是键),我将在导航过程中再次看到此对话框3次。