我已經在Eclise neon和Java 1.8中使用WindowsBuilder編寫了一個基本的計算器類型程序。它非常完整,一切都按照我想要的方式工作。除了鍵盤輸入。無法使用WindowBuilder SWING UI爲鍵盤輸入設置焦點
作爲畫龍點睛,我想檢測keyTyped事件並將它們映射到按鈕按鈕,以便用戶可以使用鍵盤輸入而不是用鼠標單擊按鈕。
我已經添加了'實現的KeyListener對計劃類...
public class CashRegister implements KeyListener {
private JTextField keyb;
我試圖監聽器設置爲不可見的JTextField稱爲KEYB ....
private void initialize() {
keyb = new JTextField(20);
keyb.addKeyListener(this);
keyb.setFocusable(true);
keyb.requestFocusInWindow();
而且我已經添加的方法來處理捕獲的按鍵...
public void keyTyped (KeyEvent e) {
String out = "";
out = out + e.getKeyChar();
pence1text.setText(out);
}
public void keyPressed (KeyEvent e) {
}
public void keyReleased (KeyEvent e) {
}
所以,在這個階段,所有我很期待,證明正在工作,是我按下出現在名爲'pence1text'的文本框中的關鍵字符。但是,它不起作用,當我按下a鍵時什麼也不顯示。
我認爲這可能是一個焦點問題。谷歌搜索和檢查stackoverlow導致我添加以下行...
keyb.setFocusable(true);
keyb.requestFocusInWindow();
如上所述,但仍然沒有運氣。
有沒有人有任何想法我做錯了什麼,或者我可以嘗試下一步?
感謝
'public boolean requestFocusInWindow()''boolean'返回的值是什麼?打賭它是'假'。 –
是的,它返回false。我認爲這是問題。我錯過了什麼?謝謝。 –
嘗試閱讀[this](https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)文章。使用修飾符「JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT」註冊根窗格的所有操作。 –