2011-02-06 96 views
0

有可能識別wht btn是否被一個唯一的eventListener按下?什麼按鈕被按下java

我想這代碼,但

ActionListener one = new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        if (gr1.getCounter1() < 5) { 
         gr1.setCounter1(gr1.getCounter1() + 1); 
         if (arraybtn[1].isSelected()) 
          test1.setIcon(play1a); 
         if (arraybtn[2].isSelected()) 
          test1.setIcon(play1b); 
         if (arraybtn[3].isSelected()) 
          test1.setIcon(play1c); 
         if (arraybtn[4].isSelected()) 
          test1.setIcon(play1d); 
         if (arraybtn[5].isSelected()) 
          test1.setIcon(play1e); 
        } else { 
         pn5.setText("No more cards"); 
        } 
       } 
      }; 

由於沒有工作,!

回答

1

你的代碼是非常需要被重構。例如,你有一個JButton數組,爲什麼不是一個類似的ImageIcons數組,那麼你可以擺脫所有那些塊。

例如:

ActionListener one = new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     if (gr1.getCounter1() < 5) { 
      gr1.setCounter1(gr1.getCounter1() + 1); 
      for (int i = 0; i < arraybtn.length; i++) { 
       if (arraybtn[i] == e.getSource()) { 
       test1.setIcon(play1Icons[i]); 
       } 
      } 
     } else { 
      pn5.setText("No more cards"); 
     } 
    } 
    }; 

而且不要忘記我在你關於進一步重構包括創建Player類,一類卡,甲板類,一個遊戲管理器等其他線程建議。 (1).getImage();如果我使用另一個數組像test1.setIcon(play1Icons [i]);如何我可以定義這個問題,「我在這個腳本中有play1a = hand.get(1).getImage變量?」

手是一個ArrayList?解決這個問題的一種方法是做類似

test1.setIcon(hand.get(i).getImage()); 

或者其上的一些變體。

5

使用ActionEvent對象中的getSource方法。

你的代碼是這樣:

if (e.getSource() == arraybtn[1]) 
    test1.setIcon(play1a); 
if (e.getSource() == arraybtn[2]) 
    test1.setIcon(play1b); 
if (e.getSource() == arraybtn[3]) 
    test1.setIcon(play1c); 
if (e.getSource() == arraybtn[4]) 
    test1.setIcon(play1d); 
if (e.getSource() == arraybtn[5]) 
    test1.setIcon(play1e); 

得到事件(即按下的按鈕)的來源。上述

http://download.oracle.com/javase/1.4.2/docs/api/java/util/EventObject.html#getSource()

+0

所以你會得到 如果(arraybtn [1] .equals(e.getSource())):-) – hauntsaninja 2011-02-06 16:45:12

+0

謝謝,完美 – anvd 2011-02-06 16:46:59