我刚刚开始学习java swing,我一直在尝试创建一个简单的游戏。该游戏类似于扫雷。一个窗口,带有一个仅有1个矿井的矩阵。点击一个按钮,如果它不是我的,我禁用按钮并显示绿色,如果它是我的,我禁用按钮并显示红色。我通过将按钮背景设置为所需的颜色来显示颜色。到目前为止,我已经完成了实施。 接下来我添加了一个重置按钮,点击后我可以使用:setEnabled(true)重新设置所有按钮。
但由于某种原因,该按钮未启用。我已经确认程序流程到达启用按钮的代码,但我无法找到它无法正常工作的原因。
这是我用重置按钮和1个按钮编写的测试程序。同样的问题。谁能指出我可能做错了什么?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test implements ActionListener{
JFrame frame = new JFrame("Mine");
JButton buttons = new JButton();
JButton reset = new JButton("Reset");
Container grid = new Container();
public Test(){
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLayout(new BorderLayout());
frame.add(reset, BorderLayout.NORTH);
reset.addActionListener(this);
buttons = new JButton();
buttons.addActionListener(this);
frame.add(buttons, BorderLayout.CENTER);
}
public static void main(String[] args){
new Test();
}
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource().equals(reset))
buttons.setEnabled(true);
else{
if(event.getSource()==buttons){
buttons.setBackground(Color.RED);
buttons.setEnabled(false);
}
}
}
}
答案 0 :(得分:8)
实际上当您点击重置时它会启用,您忘记做的就是重置颜色:
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource().equals(reset)){
buttons.setEnabled(true);
buttons.setBackground(null);
}else{
if(event.getSource()==buttons){
System.out.println("xxx");
buttons.setBackground(Color.RED);
buttons.setEnabled(false);
}
}
}