将图标从jbutton移动到jbutton



我设置了一个网格布局,中心有16个按钮。我在第一个按钮上放了一个图标。

我该如何循环,当用户选择网格上的下一个按钮时,它会将图标从旧位置移动到新位置?

private ArrayList<JButton> grid = new ArrayList<JButton>(); 
JPanel gridBtnPanel = new JPanel();
gridBtnPanel.setLayout(new GridLayout(4, 4));
for(int i = 0; i <= 16; i++){
    JButton innerButton = new JButton();
    gridBtnPanel.add(innerButton);
    grid.add(innerButton);
}
ImageIcon player= new ImageIcon("player.JPG");
//starting position     
grid.get(0).setIcon(player);
//wanting to move to next button when I select the near by button       
for(int i = 0; i < grid.lastIndexOf(theifPerson); i++){
    grid.get(i).setIcon(null);
}

任何帮助都会很棒。

谢谢。

您可以将actionlistener添加到按钮中,一旦按下按钮,它就会搜索所有按钮,找到一个带有非空图标的按钮,并将按下按钮的图标切换为非空图标

假设每个JButton都附加了某种ActionListener,这样您就知道用户何时单击其中一个,如果没有,请查看如何使用按钮、复选框和单选按钮以及如何编写Action Listener

当用户单击按钮时,会调用actionPerformed方法。在这里,您想确定单击了哪个按钮,将最后一个按钮的图标属性设置为null,并设置单击按钮的图标。。。

这将需要您知道最后一个"活动"按钮

private int activeButton;
private ImageIcon player;
//...
grid.get(0).setIcon(player);
activeButton = 0;

然后你只想更新当前状态。。。

public void actionPerformed(ActionEvent evt) {
    Object source = evt.getSource();
    if (source instanceof JButton) {
        JButton clicked = (JButton)source;
        grid.get(activeButton).setIcon(null);
        clicked.setIcon(player);
        activeButton = grid.indexOf(clicked);
    }
}

例如。。。

相关内容

  • 没有找到相关文章

最新更新