有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我刚刚开始学习java swing,我一直在尝试创建一个简单的游戏。游戏类似于扫雷舰。一扇窗户上有一排僵尸,只有一颗地雷。点击一个按钮,如果它不是地雷,我禁用按钮并显示绿色,如果它是地雷,我禁用按钮并显示红色。我通过将按钮背景设置为所需颜色来显示颜色。到目前为止,我的实现还不错。 接下来,我添加了一个重置按钮,单击该按钮后,我可以使用: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);
            }

        }

    }
}

共 (1) 个答案

  1. # 1 楼答案

    实际上,当您单击“重置”时,它会被启用,您忘记做的只是重置颜色:

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