Java 如何禁用JPanel中除一个按钮外的所有按钮并逐个启用它们

Java 如何禁用JPanel中除一个按钮外的所有按钮并逐个启用它们,java,arrays,swing,if-statement,point,Java,Arrays,Swing,If Statement,Point,我创建了一个带有11个按钮的JPanel(全部在一个数组中)。现在我在这些按钮上设置了actionListener,但我希望最初只启用一个按钮,然后在它上的actionListener完成后,启用下一个按钮。这是我的密码 public class Beginner extends JPanel { static JButton quest; Random rand = new Random(); int n = 10; static List <Poi

我创建了一个带有11个按钮的JPanel(全部在一个数组中)。现在我在这些按钮上设置了actionListener,但我希望最初只启用一个按钮,然后在它上的actionListener完成后,启用下一个按钮。这是我的密码

public class Beginner extends JPanel {

    static JButton quest;
    Random rand = new Random();

    int n = 10;

    static List <Point> points = new ArrayList<Point> ();

    Quest1 q1;
    Quest2 q2;
    Quest3 q3;
    Quest4 q4;
    Quest5 q5;
    Quest6 q6;
    Quest7 q7;
    Quest8 q8;
    Quest9 q9;
    Quest10 q10;
    Quest11 q11;

    public Beginner() {

        int radius = 200;
        Point center = new Point (250, 250);

        double angle = Math.toRadians(360 / n);      
        points.add(center);
        for (int i = 0; i < n; i++) {
            double theta = i * angle;

            int dx = (int) (radius * Math.sin(theta));    
            int dy = (int) (radius * Math.cos(theta));
            Point p = new Point (center.x + dx , center.y + dy);
            points.add(p);
        }
        draw (points);
    }

    public void draw (List<Point> points) {
        JPanel panels = new JPanel();
        SpringLayout spring = new SpringLayout();
        int count = 1;
        for (Point point: points) {
            quest = new JButton("Question " + count);
            quest.setForeground(Color.BLACK);
            Font fonte = new Font("Script MT Bold", Font.PLAIN, 20);
            quest.setFont(fonte);
            add (quest);
            count++;
            spring.putConstraint(SpringLayout.WEST, quest, point.x, SpringLayout.WEST, panels );

            spring.putConstraint(SpringLayout.NORTH, quest, point.y, SpringLayout.NORTH, panels );
            setLayout(spring);
            panels.setOpaque(false);
            panels.setVisible(true);
            panels.setLocation(5,5);
            add(panels);
            //I want to disable all but one button at this point

            quest.addActionListener (new ActionListener() {
                public void actionPerformed (ActionEvent p) {
                    if (point.equals(points.get(0))) {
                        q1 = new Quest1();
                        //then, enable the next after this is completed
                    }   
                    else if (point.equals(points.get(1))) {
                        q2 = new Quest2();
                        //same comment in Quest1 follows....and so on!
                    }
                    else if (point.equals(points.get(2))) {
                        q3 = new Quest3();
                    }
                    else if (point.equals(points.get(3))) {
                        q4 =  new Quest4();
                    }
                    else if (point.equals(points.get(4))) {
                        q5 = new Quest5();
                    }
                    else if (point.equals(points.get(5))) {
                        q6 = new Quest6();
                    }  
                    else if (point.equals(points.get(6))) {
                        q7 = new Quest7();
                    }  
                    else if (point.equals(points.get(7))) {
                        q8 = new Quest8();
                    }  
                    else if (point.equals(points.get(8))) {
                        q9 = new Quest9 () ;
                    }
                    else if (point.equals(points.get(9))) {
                        q10 = new Quest10() ;
                    }
                    else if (point.equals(points.get(10))) {
                        q11 =  new Quest11 ();
                    }
                } 
            });
        }
    }
}
公共类初学者扩展JPanel{
静态JButton任务;
Random rand=新的Random();
int n=10;
静态列表点=新的ArrayList();
任务1第一季度;
任务2第2季度;
任务3第3季度;
任务4第4季度;
问题5,问题5;
问题6,问题6;
问题7,问题7;
问题8,问题8;
任务9、问题9;
任务10 q10;
任务11 q11;
公共初学者(){
int半径=200;
点中心=新点(250250);
双角度=数学托拉度(360/n);
点。添加(中间);
对于(int i=0;i
如果您想按顺序启用按钮,我将使用至少两个字段,一个填充按钮的
ArrayList
和一个
int buttonListIndex
int index字段来告诉程序哪个按钮处于活动状态。您可以通过
setEnabled(true)
启用和禁用按钮。在ActionListener中,增加索引int并使用for循环遍历所有按钮,禁用除与索引对应的按钮之外的所有按钮。我将把这方面的代码实现留给您来完成。

上面的代码与您的问题无关,我建议您尝试帮助我们。我建议您重新开始并简化--创建并发布一个非常简单的程序,其中包含一个包含两个按钮的GUI,并尝试解决您的主要问题,然后告诉我们您在使用此代码时遇到了哪些问题。请尽可能具体和描述性的。无论如何,你应该考虑重新做上面的代码,因为它包含很多不必要的冗余,在那里你有很多代码行,它们看起来都在做完全相同的事情,还有一堆任务对象看起来更快乐,它们被放在一个数组或数组中。ActionListeners应该几乎立即运行,因此您的请求(没有进一步的细节)实际上没有意义,除非您希望按顺序启用按钮。请澄清。也许你明白了……我希望它们按顺序启用,比如先启用一个,然后再启用第二个,这就是我要说的!我只是想让你们了解整个情况!使用缩进代码行和代码块的逻辑和一致形式。缩进的目的是使代码的流程更易于遵循!如果这是一个语法…我会更喜欢它!“我的按钮”已经是arraylist的一部分了。@Presh_K7:不要逃避编写代码的机会。请先自己动手做。在你最初的问题中,我甚至没有看到任何尝试。如果你在尝试中遇到了困难,请将其作为编辑发布在你的问题中,我将与你合作。好的!如何创建int buttonListIndex来告诉程序哪个按钮处于活动状态。。。。我糊涂了!如何创建任何i