我目前正在創建這個java GUI,要求用戶輸入10個條目,然後使用這些值來執行下一個操作。如何限制用戶只輸入數字?
我只想輸入數字或小數點以便它只能是一個浮點值。
如果它不是數字或小數點,它應該提示用戶在執行下一個動作之前再次輸入該特定條目。
我應該怎麼做?
我目前正在創建這個java GUI,要求用戶輸入10個條目,然後使用這些值來執行下一個操作。如何限制用戶只輸入數字?
我只想輸入數字或小數點以便它只能是一個浮點值。
如果它不是數字或小數點,它應該提示用戶在執行下一個動作之前再次輸入該特定條目。
我應該怎麼做?
黃,
不知道您是否使用Swing或不...
很久以前我有同樣的問題,我與創建擴展了JTextField類RestrictedTextField解決它。在構造函數中我添加了一個按鍵偵聽器(addKeyListener(新RestrictedKeyAdapter());)
private class RestrictedKeyAdapter extends KeyAdapter {
@Override
public void keyReleased(KeyEvent e) {
if (getText().equals("")) {
oldString = "";
return;
} else {
// if you cannot parse the string as an int, or float,
// then change the text to the text before (means: ignore
// the user input)
try {
if (type.equals("int")) {
int i = Integer.parseInt(getText());
oldString = getText();
} else if (type.equals("float")) {
float f = Float.parseFloat(getText());
oldString = getText();
} else {
// do nothing
}
} catch (NumberFormatException el) {
setText(oldString);
}
// if the text is identical to the initial text of this
// textfield paint it yellow. If the text was changed
// paint it red.
if (initialString.equals(getText())) {
setForeground(Color.YELLOW);
} else {
setForeground(Color.RED);
}
}
}
}
的想法是,每次按下該文本框的鍵(並釋放它的話),在文本該文本字段被解析。例如,如果組件只接受浮動,那麼組件會嘗試將其解析爲浮動(Float.parseFloat(..))。如果解析成功,一切都很好。如果解析失敗(拋出NumberFormatException),則舊文本將被寫回到文本字段中(字面上忽略用戶輸入)。
我認爲你可以直接添加到KeyAdapter的JTextField中沒有創建一個專用類,但這種解決方案,你可以記住初始字符串和老字符串。
你可以玩代碼..如果輸入有效或不可以(或者如果文本與初始字符串相同,則在我的代碼片段中)可以更改文本字段的顏色。
一個附加評論:我設置的文本字段的「類型」在名稱爲「類型」,這是簡單地用值「INT」的字符串,「浮動」的變量,等....更好解決辦法是在這裏例如,當然枚舉...
我希望這是有益...
蒂莫
不輸入驗證 – kleopatra 2012-03-23 11:07:42
使用keyListeners不斷,尤其不能...........爲什麼? – 2012-03-23 19:00:12
Ctrl + V或特殊的OS功能。 – 2014-03-14 10:41:43
http://docs.oracle.com/javase/tutorial/uiswing/components /formattedtextfield.html – maialithar 2012-03-23 07:52:52
你在使用swing還是applet? – Jayy 2012-03-23 07:53:27