抱歉,第一次使用CSDN问答,格式不太规范请多多见谅。
在做三连棋游戏,发现问题,逐步筛选,最后确定了是这个问题。
public void actionPerformed(ActionEvent e){
container.remove(spots[0]);
}
此代码无效,鼠标点击时就会发生错误。
而container.remove(spots[0]);这行代码放在其他方法中不会出现任何问题。
以下是缩减后的完整代码,可直接复制到记事本中测试。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class demo extends JFrame implements ActionListener{
//定义按钮
JButton spots[] = new JButton[1];
Container container;
//构造方法
public demo(){
super("按钮");
setSize(120,140);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//装载组件的容器
Container container = getContentPane();
//设置布局管理器为空布局
container.setLayout(null);
spots[0] = new JButton();
//设置按钮的位置与大小
spots[0].setBounds(8, 3, 100, 100);
//将按钮添加到容器中
container.add(spots[0]);
//按钮加入动作监听器
spots[0].addActionListener(this);
}
//动作监听时执行该方法
public void actionPerformed(ActionEvent e){
container.remove(spots[0]);
}
//在main函数中运行
public static void main (String[] args){
new demo();
}
}
呃,格式还是有些掌握不好。