2016-04-28 27 views
0

接口如何在點擊輸入選擇一個文本框的鍵盤輸出

http://i.stack.imgur.com/cAvOJ.png

上圖顯示我試圖實現的接口。登錄面板和鍵盤面板需要以某種方式協同工作,所以無論何時點擊所選文本框,我都可以使用鍵盤輸入所需的輸入。

在正確的詳細條目上,登錄面板將更改爲其他文本框的另一面板,因此鍵盤也必須使用這些面板。

任何想法?先謝謝你!

+1

所以你想知道如何實現一個鍵盤到你的應用程序 – Priyamal

+0

(1-)什麼是文本框?沒有那個名字的Swing類。它看起來像我正在使用JTextField。所以具體來說,在提問時! – camickr

+0

對不起,第一次使用這個; /我仍然是一個初學java。是JTextField –

回答

1

可以擴展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); 
... 

您需要創建爲「清除」按鈕單獨行動。

+0

是的,這就是我一直在尋找的!謝謝 :) –

0

實現IMO的最佳方式是在所有的JButton上使用setFocusable(false),所以只有兩個輸入字段可以成爲焦點所有者。您還應該爲這兩個TextField提供一個FocusListener,以便知道用戶是否單擊了該號碼應該去的按鈕。

0

嗯。您可以讓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; 
    } 
}); 
相關問題