2013-09-23 52 views
0
public int open=0; 
private JButton opens[]=new JButton[1]; 

    for(i=0; i<buttons.length; i++){ 
      for (j=0; j<buttons[i].length;j++){ 
       n=i*buttons.length+buttons[i].length; 
       buttons[i][j]=new JButton(); 

       panel.add(buttons[i][j]); 
       buttons[i][j].addActionListener(this); 
      } 
     } 


     public void actionPerformed(ActionEvent e) { 
     if(e.getSource() instanceof JButton){ 
      JButton pressedButton = (JButton) e.getSource(); 
      opens[open]=(JButton) e.getSource(); 
      if((pressedButton.getIcon() == null)){ 
       pressedButton.setIcon(new ImageIcon(getClass().getResource("/images/2.jpg"))); 
       open=open++; 
      } else { 
       //pressedButton.setIcon(null); 
      } 

      } 
     if (open==1){ 
      opens[0].setIcon(null); 
      opens[1].setIcon(null); 
     } 
    } 

我想持有2點擊JButton然後關閉或保持打開狀態。我怎麼能在陣列或其他東西?從e.getsource持有jbuttons陣列

我的數組控制是錯誤的?

有了這段代碼,我可以打開無限制的圖像,它們都沒有關閉。

+0

你想在這裏做什麼? – mre

+1

可能是我在'SO'上讀到的最不清楚的問題之一。 –

+0

我想在數組中保存2個圖像,然後它們會關閉它們,如果它們不相同。這是一個記憶遊戲。只能打開2張圖像。 –

回答

1

我想在數組中保存2個圖像,然後它會關閉它們,如果他們 不相同。這是一個記憶遊戲。只有2個圖像可以打開

  • 加載圖像局部變量Icon/ImageIcons,以避免任何FileIO專注意味着代碼行pressedButton.setIcon(new ImageIcon(getClass().getResource("/images/2.jpg")));

  • 添加此Icon/ImageIconsJButton.setPressedIcon(myIcon)

  • 再有就是無用代碼行重置Icon返回pressedButton.setIcon(null);

+0

也考慮'JToggleButton',提到[這裏](http://stackoverflow.com/a/7867721/230513)。 – trashgod