java - 在 java swing 中禁用后无法启用按钮

标签 java swing

我刚开始学习 java swing,我一直在尝试创建一个简单的游戏。游戏类似于扫雷。一个带有按钮矩阵的窗口,只有 1 个地雷。单击按钮时,如果不是地雷,我会禁用按钮并显示绿色,如果是地雷,我会禁用按钮并显示红色。我通过将按钮背景设置为所需颜色来显示颜色。到目前为止,我已经很好地完成了实现。 接下来,我添加了一个重置​​按钮,单击该按钮后,我将使用 setEnabled(true) 重新启用所有按钮。

但由于某种原因,该按钮未启用。我已经确认程序流程到达了启用按钮的代码,但我无法找到它不起作用的原因。

这是我用一个重置按钮和一个按钮编写的测试程序。同样的问题。谁能指出我可能做错了什么?

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

        }

    }
}

最佳答案

实际上,当您点击重置时它会被启用,您只是忘记了重置颜色:

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

    }

}

关于java - 在 java swing 中禁用后无法启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27861844/

相关文章:

java - Android post 请求失败并显示 OKHTTP

java - 如何从 sqlite 数据库创建 EER 模型

Java GUI、JFrames 和对话框

java - 当子组件中添加其他 MouseListener 时,父组件的 MouseListener 无法在子组件中工作

java - JTabbedPane ArrayIndexOutOfBoundsException : 0

java - 在java中更改输入语言

java - 添加到 JPanel 时 JScrollPane 未调整大小

java - 从字符串 [] 的所有元素中删除引号

java - Spring 使用 JMX 身份验证

url 连接中的 java.lang.nullpointerException