2016-03-27 48 views
1

這裏是問題, 我有3個文本框,3個按鈕和1個標籤。他們的文本是text1,text2 text3,but1,but2,but3。如何只用一個事件來收聽我的所有組件?

我給你一個關於我想要做什麼的例子;當我雙擊一個按鈕時,按鈕會將標籤的文本更改爲按鈕的文本。我的意思是當我雙擊but2時,標籤的文字應該是but2。

我可以用該代碼來做到這一點;

 MouseAdapter ml = new MouseAdapter() { 
      public void mouseClicked(MouseEvent me) { 
       if (me.getClickCount()==2) { 

       jLabel1.setText(jButton1.getText); 

       } 
      } 
     }; 
     jButton1.addMouseListener(ml); 

所以它的工作原理,但它只適用於jButton1。我必須爲所有組件(textfields和jbuttons)編寫不同的mouseListener。我怎麼能與一個聽衆做到這一點?或一個事件?你有什麼主意嗎?

回答

3

看看MouseEvent#getSource ......雖然,說實話,如果你使用JButton是你不應該使用一個MouseListener,但ActionListener代替。此外,一般來說,大多數用戶不會雙擊一個JButton,因爲它們並不直觀,按鈕只需單擊即可激活

請記住,按鈕也可以通過鍵盤來激活,其中MouseListener將不會通知有關

+0

我試過getSource,我也嘗試過getComponent,但我不能使用像getText或setText這樣的方法,我想我必須將它轉換爲JButton或JTextField,仍然不是我的答案:(實際上我是一個學生,我的項目,所以我應該這樣做:p你有什麼想法嗎? –

+0

其實,你只是回答自己的問題'if(me.getSource()== jButton1){...}你也可以使用'if(「什麼是文本f jButton 1是」.equals(me.getActionCommand())){...}' – MadProgrammer

+0

哦,上帝,是的,我的回答:)。這工作,我現在施放和使用方法。謝謝.. –

相關問題