2014-04-24 2 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) 이전 버튼에서 아이콘을 제거하는 방법에 대한하는 그런 다음 그것을 새로운 것으로 설정하십시오 (현재 i). – Abdul

답변

1

당신은 버튼에 ActionListener를 추가 할 수 있으며, 버튼을 누를 때 일단은 null이 아닌 아이콘 하나를 찾기 위해 모든 버튼을 통해 검색하고 null 이외의 아이콘

1

로 누른 버튼의 아이콘을 전환 아마도 당신은 당신이하는 How to Use Buttons, Check Boxes, and Radio Buttons보고 How to Write an Action Listener

사용자가 버튼을 클릭하지 않으면 사용자가 하나를 클릭 할 때 당신이 알고있는 각각의 JButton에 부착 ActionListener의 일종는 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); 
    } 
} 

...