2013-12-08 59 views
0

我有一個標籤[] [],並且這個標籤中的所有標籤都有mouseadapter,當任何mouselistener發射時,我想要達到所有標籤。所有標籤都有一個圖標。如果我點擊一個標籤,應該改變他們的圖標。從我的代碼我可以使用mouselistener/mouseadapter訪問標籤[] []中的所有標籤嗎?

例如:

for(int x = 1; x < 11; x++){ 
     for(int y = 1; y < 11; y++){ 
      label[x][y].setIcon(korok[randomGenerator.nextInt(6)]); 
      label[x][y].addMouseListener(new LabelMouseListener(x, y));}} 
     } 
    } 

public class LabelMouseListener extends MouseAdapter{ 
private final int x, y; 

public LabelMouseListener() { 
    this.x = x; 
    this.y = y; 
} 
       @Override 
       public void mouseClicked(MouseEvent e) { 

        int egyklik[] = new int[3]; 

        if(egyklik[0] == 0){ 
         egyklik[0] = 1; egyklik[1] = x; egyklik[2] = y; 
        } 
        else if(egyklik[0] == 1){ 
         //JLabel l = (JLabel) e.getSource(); 
         // it's wrong code, i would like something what will do this, 
         //if i do the Override in the other(JFrame) class, it can 
         //reach labels, but can't use x and y 

         //label[x][y].setIcon(label[egyklik[1]][egyklik[2]].getIcon()); 
         //label[egyklik[1]][egyklik[2]].setIcon(label[x][y].getIcon()); 
        } 
       } 

} 

回答

1

是可以達到的所有標籤。

爲什麼你從index 1.開始看你的for循環(int x = 1 and int y = 1)。

我認爲x和y以index 0開頭。

x < 11; and y< 11;分別需要更改爲x < 10;and y < 10;

在你的mouseClicked()方法中這樣做。

JLabel l = null; 
if(e.getSource() instanceof JLabel){ 
    l = (JLabel) e.getSource(); 

} 
+0

我有一個框架的x,y = 0,11這是,但我認爲這不重要。否則,我找到了一個解決方案(儘管我不知道它是完全正常的)。無論如何謝謝,我也用過你的例子。如果任何人需要的工作代碼只是問。 – minnera

相關問題