2012-05-11 47 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來完成 –

相關問題