单击鼠标交换按钮图标
Swap JButton Icons On MouseClicks
我有一个 JButton[][]
数组,用于存储网格上的每个按钮。
我想要做的是:
1) 在网格上点击我要移动的jbutton(icon)
。
2) 单击我希望之前选择的 jbutton(icon) 移动到的 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");
}
}
}
我尝试了一些没有用的东西(这移动了图标,但图标也保留在起始位置)。任何见解都会有所帮助。
那是因为你从未更改过 selectedButton
的图标,试试这个:
if(iconSelected && !but.equals(selectedButton)){ // move(swap) buttons
Icon bIcon = but.getIcon();
but.setIcon(selectedButton.getIcon());
selectedButton.setIcon(bIcon);
...
}
我有一个 JButton[][]
数组,用于存储网格上的每个按钮。
我想要做的是:
1) 在网格上点击我要移动的jbutton(icon)
。
2) 单击我希望之前选择的 jbutton(icon) 移动到的 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");
}
}
}
我尝试了一些没有用的东西(这移动了图标,但图标也保留在起始位置)。任何见解都会有所帮助。
那是因为你从未更改过 selectedButton
的图标,试试这个:
if(iconSelected && !but.equals(selectedButton)){ // move(swap) buttons
Icon bIcon = but.getIcon();
but.setIcon(selectedButton.getIcon());
selectedButton.setIcon(bIcon);
...
}