GKoo
GKoo

Reputation: 59

Swap JButton Icons On MouseClicks

I have a JButton[][] array that stores every button on a grid. What I want to do is :

1) click the jbutton(icon) that I want to move on the grid.

2) click on the jbutton that I want the previous selected jbutton(icon) to move to.

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

    }

I have tried some things that didnt work ( this moves the icon but the icon also remains at the starting location). Any insight would be helpfull.

Upvotes: 1

Views: 104

Answers (1)

Titus
Titus

Reputation: 22474

That is because you never change the selectedButton's icon, Try this:

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

Upvotes: 3

Related Questions