2014-04-24 38 views
0

我設置了一個網格佈局,中間有16個按鈕。我在第一個按鈕上放置了一個圖標。將圖標從jbutton移動到jbutton

我該如何循環,當用戶選擇網格上的下一個按鈕時,它會將圖標從舊位置移動到新位置?

private ArrayList<JButton> grid = new ArrayList<JButton>(); 

JPanel gridBtnPanel = new JPanel(); 
gridBtnPanel.setLayout(new GridLayout(4, 4)); 
for(int i = 0; i <= 16; i++){ 
    JButton innerButton = new JButton(); 
    gridBtnPanel.add(innerButton); 
    grid.add(innerButton); 
} 

ImageIcon player= new ImageIcon("player.JPG"); 

//starting position  
grid.get(0).setIcon(player); 

//wanting to move to next button when I select the near by button  
for(int i = 0; i < grid.lastIndexOf(theifPerson); i++){ 
    grid.get(i).setIcon(null); 
} 

任何幫助將是偉大的。

謝謝。

+0

如何從以前的按鈕,清除圖標(I-1),一然後將其設置爲新的(當前我)。 – Abdul

回答

1

你可以添加的ActionListeners的按鈕,一旦按下按鈕,它會搜索所有的按鈕找到一個有非空的圖標,並與非空圖標

1

切換按下按鈕的圖標想必你有某種ActionListener連接到每個JButton,讓你知道當用戶點擊一個,如果你不這樣做,看看How to Use Buttons, Check Boxes, and Radio ButtonsHow to Write an Action Listener

當用戶點擊一個按鈕時,actionPerformed方法調用。在這裏,您要確定哪個按鈕被點擊,最後一個按鈕的圖標屬性設置爲null並設置點擊的按鈕圖標...

這需要你知道最後的「活動」按鈕

private int activeButton; 
private ImageIcon player; 
//... 
grid.get(0).setIcon(player); 
activeButton = 0; 

然後你只是想更新當前狀態...

public void actionPerformed(ActionEvent evt) { 
    Object source = evt.getSource(); 
    if (source instanceof JButton) { 
     JButton clicked = (JButton)source; 
     grid.get(activeButton).setIcon(null); 
     clicked.setIcon(player); 
     activeButton = grid.indexOf(clicked); 
    } 
} 

例如...