JButton上的ActionListener创建"图像"我框架中的按钮?

时间:2014-12-08 20:00:55

标签: java swing jbutton actionlistener

我在java中使用swing创建了一个connect-4游戏。 我有一个由6个按钮组成的数组,用于输入玩家想要进行的移动。

当我单击一个按钮时,ActionListener会执行我想要的操作,但也会在屏幕的左上角放置最近按下的按钮的图像。我说"图像"按钮,因为它无法单击。这是我的代码:

public class ButtonPanel extends JPanel implements ActionListener{
    ArrayList<JButton> buttonList;

    public ButtonPanel(){

        //set up the JPanel...

        for (int i = 0; i < 7; i++){
            buttonList.add(new JButton("" + i));
            buttonList.get(i).addActionListener(this);
            add(buttonList.get(i));
        }
    }
    public void actionPerformed(ActionEvent e) {
        for (JButton b : buttonList){
            if(e.getSource() == b){
                frame.playerMove =  buttonList.indexOf(e.getSource());
                return;
            }
        }
    }
}

Here's what happens when I click the button 3

And when I click button 5

有人知道这里发生了什么,或者如何修复它?

1 个答案:

答案 0 :(得分:3)

  

但也会在屏幕左上角放置最近按下的按钮的图像。我说一个按钮的“图像”,因为它无法点击。

听起来像是在做自定义绘画。

  1. 确保覆盖paintComponent(),而不是绘制();
  2. 确保paintComponent()方法中的第一个语句为super.paintComponent(...),以便在自定义绘制完成之前清除面板的背景。
  3. 如果这没有帮助,请发布一个显示问题的正确SSCCE

    将来,请务必在发布SSCCE时提出所有问题。