我基本上創建的是一個JDialog,它在窗體上有一個關鍵事件。所以當例如按下空格時,它會執行某些操作。這工作得很好,直到我在可編輯的同一個對話框上創建了一個JTextArea。當我這樣做時,我無法從JTextArea中刪除焦點並使熱鍵工作。我如何讓關鍵事件和JTextArea在同一個JDialog上運行?如何使關鍵事件在JDialog上工作,而JTextArea呢?
0
A
回答
0
您需要做的是將KeyListener
從JDialog
添加到JTextArea
。
下面是這個SSCCE。
import java.awt.event.*;
import javax.swing.*;
public class DialogListener {
public static void main(String[] args) {
JDialog dialog = new JDialog();
dialog.setSize(300, 400);
dialog.setVisible(true);
KeyListener listener = getKeyListener();
dialog.addKeyListener(listener);
JTextArea area = new JTextArea();
area.addKeyListener(listener);
dialog.add(area);
}
public static KeyListener getKeyListener(){
return new KeyAdapter() {
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyChar());
}
};
}
}
0
假設您已經爲您的JDialog對象定義了KeyListener
。
這是你可以得到一個組件的組件:
dialog.getContentPane().getComponents();
這是你如何能得到的KeyListener
。你dialog
的數組:
KeyListener[] keyListeners = dialog.getKeyListeners();
現在,讓我們遍歷並加上KeyListener
s:
Component[] components = dialog.getContentPane().getComponents();
KeyListener[] keyListeners = dialog.getKeyListeners();
for (int componentIndex = 0; componentIndex < components.length; componentIndex++) {
for (int keyListenerIndex = 0; keyListenerIndex < keyListeners.length; keyListenerIndex++) {
components[componentindex].addKeyListener(keyListeners[keyListenerIndex]);
}
}
代碼未經測試,如果有任何錯別字,請告訴我。此外,這不是傳遞性的,也就是說,它並不適用於Component
s的聽衆,它僅爲兒童Component
定義關鍵事件。
相關問題
- 1. 在JTextArea上觸發關鍵事件ctrl + space?
- 2. 如何監視JDialog的關閉事件?
- 3. 關鍵事件監聽器不工作
- 4. 如何取消jtextarea事件?
- 5. Java關鍵事件處理機制(KeyListeners通知)如何工作?
- 6. 如何使按鍵事件中的退格鍵正常工作?
- 7. 的JDialog關閉按鈕事件
- 8. 如何在JDialog上製作表格
- 9. 如何收聽jdialog容器中的按鍵事件?
- 10. 如何使關鍵箭頭工作?
- 11. JScrollPane無法在我的JTextArea上工作?
- 12. 如何在關閉事件後使觸發器點擊事件工作
- 13. 關鍵字如何在C#中工作?
- 14. 如何將X11鍵盤事件路由到stdin,如ghostscript呢?
- 15. 定期發送鼠標事件和關鍵事件。 (假裝工作)使用C#
- 16. 關鍵事件
- 17. 使用關鍵事件
- 18. 如何在輸入關鍵事件上傳遞「this」?
- 19. 顯示jdialog後JTextArea不更新
- 20. 如何在JTextArea上打印
- 21. 在c中使用事件關鍵字#
- 22. 關鍵事件在Python
- 23. 如何使郵件()在Ubuntu上工作?
- 24. 自動建議鍵盤事件不能在keyup事件上工作
- 25. Keydown事件:如何捕捉關鍵行?
- 26. 如何捕獲關鍵事件
- 27. 如何通過關鍵事件
- 28. 如何模擬GDK的關鍵事件?
- 29. 熱鍵?關鍵事件?
- 30. keydown事件如何工作?