2012-05-11 16 views
0

我想创建这个代码: 用户输入一个数值,如果他输入字符就会抛出异常 该字段会停止工作然后另一个框架显示并显示错误消息 用户关闭新框架后,一切都返回到它的方式 这意味着该领域将再次工作! 我设法让该领域停止工作,但我不知道用户是否关闭了新框架! 这里是我的尝试如果一个新的Frame显示setEditable(false),如果用户关闭它setEditable(true)

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

您是否使用'JFrame'作为错误信息?我认为'JDialog'会更好。 http://docs.oracle.com/javase/6/docs/api/ – twain249

+0

我必须使用JFrame,他们想要的是 –

回答

2

1)。不要使用新的JFrame作为错误消息 - 使用JDialogHere is how

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

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

+0

那么,我们的教训是关于JFrame,所以他们不想让除JFrame以外的用户! +如果我清除文本字段,它将恢复正常? –

+0

+谢谢!这里Ididn't发现错误 –

1
  1. 如果您选择模态对话框来显示错误消息,则不需要更改字段的可编辑状态。
  2. 就我个人而言,如果每次输错时都显示对话框,我会变得相当恼火。例如,在无效输入中将文本字段的背景颜色更改为红色,并禁用“确定”按钮(或用户指示您已完成编辑的任何机制)是更加用户友好的IMO。你甚至可以在你的面板上显示一个标示错误的标签,或者一个工具提示......。
  3. 我也建议的DocumentListener而不是KeyListener,如果你想在文本框中

为什么我建议选择另一种机制的一个例子上的文字更新作出反应,以通知用户错误: 我在文本框中粘贴了一个无效值(例如3x456),弹出一个对话框。现在我想用我的箭头键导航到错误并进行更正。这意味着我必须在左侧导航3个位置才能删除x。如果我使用我的箭头键(也是键),我将在导航过程中再次看到该对话框3次。

+0

好吧,我还是初学者 我并不了解的DocumentListener但 我真的很感谢你们伟大的信息 但所有我真是JFrame的,ActionListner和Keylistner 我被要求只能通过JFrame和setEditable来完成 –

相关问题