簡體   English   中英

禁用空格鍵觸發 JButton 的點擊

[英]Disabling space bar triggering click for JButton

JButton 認為按下空格鍵與單擊 JButton 相同(假設 JButton 具有焦點,我在這里假設)。 有沒有辦法關閉這種行為,讓他們忽略按空格鍵?

此外,更一般地說,是否有使用AbstractButtons執行此操作的技術?

aioobe 給出的鏈接顯示了如何為單個按鈕執行此操作。 如果您想對所有 JButton 執行此操作,您可以執行以下操作:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap");
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none");
im.put(KeyStroke.getKeyStroke("released SPACE"), "none");

如果要為復選框和單選按鈕執行此操作,則需要對每個不同的輸入映射重復上述操作。

您可能需要閱讀Enter Key 和 Button 它實際上與您想要的相反,因為它解釋了如何在使用 Enter 鍵時調用按鈕。 但這可能有助於解釋為什么這個解決方案反過來起作用。

您可以通過執行禁用它

jbutton.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "none");

這似乎也適用於其他AbstractButton ,例如JRadioButton

正如@camickr下面指出的那樣您可以一次性解決所有JButton的問題,如下所示:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap");
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none");
im.put(KeyStroke.getKeyStroke("released SPACE"), "none");

keyup 上的空格鍵可以激活最后一個聚焦的元素。 要使元素散焦,請嘗試:

${element}.blur()

使用:

button.setFocusable(false)

這樣,只能使用鼠標而不是空格鍵單擊按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM