我有一个JButton[][]
数组,用于存储网格上的每个按钮。
我想做的是:
1)点击我要在网格上移动的jbutton(icon)
。
2)点击我希望之前选中的jbutton(图标)移动到的jbutton。
private class BListener implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
JButton but = ((JButton) e.getSource());
if(iconSelected && !but.equals(selectedButton)){ // move(swap) buttons
but.setIcon(selectedButton.getIcon());
selectedButton.setBorder(BorderFactory.createLineBorder(Color.black));
selectedButton.setName(null);
selectedButton=but;
iconSelected=false;
}else if(!iconSelected && but.getName()!=null){
iconSelected=true;
selectedButton=but;
but.setBorder(BorderFactory.createLineBorder(Color.YELLOW,3));
}else{
if(iconSelected){
System.out.println("Already Selected");
}else{
System.out.println("Not selected");
}
}
}
我尝试过一些不起作用的东西(这会移动图标,但图标也会保留在起始位置)。任何见解都会有所帮助。
答案 0 :(得分:3)
这是因为您永远不会更改selectedButton
的图标,试试这个:
if(iconSelected && !but.equals(selectedButton)){ // move(swap) buttons
Icon bIcon = but.getIcon();
but.setIcon(selectedButton.getIcon());
selectedButton.setIcon(bIcon);
...
}