在MouseClicks上交换JButton图标

时间:2016-01-05 15:26:08

标签: java swing jbutton

我有一个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");
            }
        }

    }

我尝试过一些不起作用的东西(这会移动图标,但图标也会保留在起始位置)。任何见解都会有所帮助。

1 个答案:

答案 0 :(得分:3)

这是因为您永远不会更改selectedButton的图标,试试这个:

if(iconSelected && !but.equals(selectedButton)){ // move(swap) buttons
        Icon bIcon = but.getIcon();
        but.setIcon(selectedButton.getIcon());
        selectedButton.setIcon(bIcon);
        ...
}