我已經實現了一個JDialog,並且在ok和cancel按鈕之外添加了一個複選框。我已經把取消作爲默認按鈕,當對話框出現時,取消選擇默認,按下回車鍵,執行取消操作。按回車鍵不選擇複選框
通過按Tab鍵,當我到達複選框並按下回車鍵時,它不會選中複選框。但是,在按空格鍵時,它被選中。
但是,使用選項卡切換OK和取消按鈕,然後按下Enter鍵,會執行相應的操作。
請建議應該做什麼,使得在按下回車鍵時選中複選框。
我已經實現了一個JDialog,並且在ok和cancel按鈕之外添加了一個複選框。我已經把取消作爲默認按鈕,當對話框出現時,取消選擇默認,按下回車鍵,執行取消操作。按回車鍵不選擇複選框
通過按Tab鍵,當我到達複選框並按下回車鍵時,它不會選中複選框。但是,在按空格鍵時,它被選中。
但是,使用選項卡切換OK和取消按鈕,然後按下Enter鍵,會執行相應的操作。
請建議應該做什麼,使得在按下回車鍵時選中複選框。
每個LAF都有一個默認鍵用於選擇複選框。
檢出Key Bindings這將顯示LAF中複選框的默認綁定。
如果您想爲其他密鑰添加相同的功能,則需要管理密鑰綁定。因此,要處理您應該使用的Enter鍵:
InputMap im = checkB.getInputMap();
KeyStroke existingKeyStroke = KeyStroke.getKeyStroke("SPACE");
KeyStroke addedKeyStroke = KeyStroke.getKeyStroke("ENTER");
im.put(addedKeyStroke, im.get(existingKeyStroke));
existingKeyStroke = KeyStroke.getKeyStroke("released SPACE");
addedKeyStroke = KeyStroke.getKeyStroke("released ENTER");
im.put(addedKeyStroke, im.get(existingKeyStroke));
上述代碼將支持單個組件上的Enter鍵。如果你想在你的應用程序的所有複選框回車鍵支持,那麼你可以使用:
InputMap im = (InputMap)UIManager.get("CheckBox.focusInputMap");
非常感謝,它有所幫助。 –
@AlokRanjan,很高興幫助。不要忘了單擊複選標記以「接受」答案,以便人們知道問題已解決。你也應該接受你以前的問題的答案。 – camickr
我沒有足夠的聲望來讚揚這一點。 –
你有一個'關鍵Listener',如果'檢查box'處於焦點或像它選擇它的東西? – 3kings
據我記得「輸入」通常不會選擇一個複選框。因此使用空格鍵。否則,您可以將KeyListener添加到cckckbox。 –
請勿使用KeyLIstener。 Swing被設計成與'Key Bindings'一起使用。 – camickr