我有一個JDialog,其中包含許多行文本域和一個提交按鈕。我想知道是否可以添加一個eventListener到容器來觸發提交按鈕。如何收聽jdialog容器中的按鍵事件?
2
A
回答
2
一種便捷的方式綁定輸入到Action
是通過根窗格的setDefaultButton()
方法。您也可以在key binding中使用Action
,如here所示。
JDialog d = new JDialog(…);
Action submit = new AbstractAction("Submit") {
@Override
public void actionPerformed(ActionEvent e) {
// handle submit
}
};
private JButton b = new JButton(submit);
…
d.getRootPane().setDefaultButton(b);
2
嘗試增加
frame.getRootPane().setDefaultButton(button);
// removing the binding for pressed
frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("ENTER"), "none");
// retarget the binding for released
frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("released ENTER"), "press");
要不然像下面
addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent ke)
{
if (e.getKeyCode().equals(KeyEvent.VK_ENTER))
{
//copy paste the logic you wrote inside the ActionPerformed method
}
}});
setFocusable(true);//Setting Focus true for ur container
requestFocusInWindow();//Requesting the focus. Without this, KeyEvent will not trigger on your container
+0
作爲JFrame的對象默認情況下不會對來自KeyListener的KeyEvent作出反應 – mKorbel
+0
我很害怕,因此我提供了兩個選項mate –
相關問題
- 1. 同時收聽多個按鍵事件
- 2. 如何獲得'enter'按鍵按鍵事件監聽器?
- 3. 收聽AngularJS部分中的按鍵事件
- 4. 如何收聽WifiMonitor事件
- 5. 停止收聽事件監聽器中的事件
- 6. Backbone:如何在el容器上收聽事件
- 7. 如何收聽Thunderbird中的'SendMail'事件?
- 8. 如何收聽C#中的Windows事件?
- 9. Flex:如何收聽ItemRenderer中的事件
- 10. OSX Swift:如何收聽按鍵?
- 11. ExtJS 4,容器上的按鍵事件
- 12. 如何使用Marionette創建全局按鍵事件偵聽器
- 13. 收聽KineticJS中的事件
- 14. 爲ckeditor中的按鍵添加事件監聽器的代碼
- 15. 如何收聽軟鍵盤的狀態改變事件?
- 16. 音量按鈕按鍵事件的監聽器
- 17. 如何收聽Android硬件事件
- 18. 從iframe事件中收聽
- 19. 收聽missingTranslation事件
- 20. 收聽ActivityManager事件?
- 21. 收聽GPIB事件
- 22. 收聽WM_SYSCOMMAND事件
- 23. Android撥號器的按鍵事件監聽器
- 24. 如何收聽cocos2d-x鼠標和鍵盤事件?
- 25. 如何收聽搜索鍵?
- 26. 如何同擊鍵的事件監聽
- 27. 如何收聽剪貼板事件?
- 28. 如何收聽inAppBrowser關閉事件
- 29. 如何收聽Seekbar thumb onClick事件?
- 30. 如何收聽JCombobox選擇事件
看起來像按鍵綁定的使用 – StanislavL
一個。安迪,你可以更加詳細地解釋你的問題讓我能更好地理解你真正想做的事 – Luffy
爲了更好地幫助更快什麼,請加[MCVE(HTTP:/ /stackoverflow.com/help/mcve),說明您擁有的問題。此外,很難說出你想要做什麼,聽到按鍵可能不是正確的方法。 – kiheru