Java 如何禁用JPanel中除一个按钮外的所有按钮并逐个启用它们
我创建了一个带有11个按钮的JPanel(全部在一个数组中)。现在我在这些按钮上设置了actionListener,但我希望最初只启用一个按钮,然后在它上的actionListener完成后,启用下一个按钮。这是我的密码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
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