单击鼠标交换按钮图标

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);
        ...
}