上圖顯示我試圖實現的接口。登錄面板和鍵盤面板需要以某種方式協同工作,所以無論何時點擊所選文本框,我都可以使用鍵盤輸入所需的輸入。
在正確的詳細條目上,登錄面板將更改爲其他文本框的另一面板,因此鍵盤也必須使用這些面板。
任何想法?先謝謝你!
上圖顯示我試圖實現的接口。登錄面板和鍵盤面板需要以某種方式協同工作,所以無論何時點擊所選文本框,我都可以使用鍵盤輸入所需的輸入。
在正確的詳細條目上,登錄面板將更改爲其他文本框的另一面板,因此鍵盤也必須使用這些面板。
任何想法?先謝謝你!
可以擴展TextAction
創建Action
由每個按鈕共享。該TextAction
允許您訪問的最後焦點的文本組件:
Action numberAction = new TextAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
JTextComponent input = getFocusedComponent();
input.replaceSelection(e.getActionCommand());
}
};
JButton button1 = new JButton("1");
button1.addActionListener(numberAction);
JButton button2 = new JButton("2");
button2.addActionListener(numberAction);
...
您需要創建爲「清除」按鈕單獨行動。
是的,這就是我一直在尋找的!謝謝 :) –
實現IMO的最佳方式是在所有的JButton上使用setFocusable(false)
,所以只有兩個輸入字段可以成爲焦點所有者。您還應該爲這兩個TextField提供一個FocusListener,以便知道用戶是否單擊了該號碼應該去的按鈕。
嗯。您可以讓JTextField跟蹤當前選定的文本框,然後將FocusListeners添加到您的JTextFields,以便在獲取或丟失foxus時更新當前選定的文本框。
事情是這樣的:
JTextField currentText;
final JTextField textField = new JTextField("Ayy");
textField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
//Your code here
currentText = textField;
}
@Override
public void focusLost(FocusEvent e) {
//Your code here
currentText = null;
}
});
所以你想知道如何實現一個鍵盤到你的應用程序 – Priyamal
(1-)什麼是文本框?沒有那個名字的Swing類。它看起來像我正在使用JTextField。所以具體來說,在提問時! – camickr
對不起,第一次使用這個; /我仍然是一個初學java。是JTextField –