2016-09-21 41 views
0

我的應用程序有兩個JTextField和一個JButton。專注於一個JTextField並執行與其相關的操作

我希望有一個代碼段,其中在

  • 如果第一個TextField被聚焦/選擇,按鈕將(使用的setText法)爲1,
  • 設置其的TextField如果第二TextField的被聚焦/選擇該按鈕將(使用的setText方法)設置它的文本字段1

編輯:我所試圖做的(numInput,denInput都是JTextField的)

public void actionPerformed(ActionEvent e) { 
     String s = e.getActionCommand();        
     if (numInput.isFocusOwner()) { 
      if (s.equals("1")) { 
       if (z == 0) { 
        numInput.setText(numInput.getText() + "1"); 
       } else { 
        numInput.setText(""); 
        numInput.setText(numInput.getText() + "1"); 
        z = 0; 
       } 
     } 
     else if (denInput.isFocusOwner()) { 
      if (s.equals("1")) { 
       if (z == 0) { 
        denInput.setText(numInput.getText() + "1"); 
       } else { 
        denInput.setText(""); 
        denInput.setText(numInput.getText() + "1"); 
        z = 0; 
       } 
     } 
} 

這從來不適合我。

+1

使用[FocusListener](https://docs.oracle.com/javase/tutorial/uiswing/events/focuslistener.html)來偵聽JTextField的焦點更改並相應地執行操作。爲了更好的幫助更快,發佈[mcve] – copeg

+0

嘿,我只是出於想法。你能提供一個代碼片段嗎? – Sparker0i

+0

'你能提供一個代碼片段嗎?你首先。查看我在上面評論中發佈的鏈接。 – copeg

回答

2

創建一個Action,延伸TextAction並將此Action添加到您的按鈕。

TextAction有一個getFocusedComponent()方法,該方法將返回具有焦點的最後一個文本組件。

該操作的基本代碼將是:

TextAction action = new TextAction("") 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
      JTextComponent textField = getFocusedComponent(); 
      System.out.println(textField.getText()); 
    } 
}; 

如果你只有在窗體上兩個文本字段這隻會工作。如果你有兩個以上的話,那麼你需要添加額外的代碼來驗證焦點是在點擊按鈕之前的兩個文本字段之一。

+0

這對我有效..謝謝你,先生! – Sparker0i

相關問題