gpt4 book ai didi

java - 我的单选按钮没有与我的 JButton 交互

转载 作者:行者123 更新时间:2023-11-29 03:31:41 25 4
gpt4 key购买 nike

public Quiz(){
frame = new JFrame();
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setTitle("x");
frame.getContentPane().setBackground(Color.GRAY);
frame.setLayout(new FlowLayout());

label = new JLabel("What is...?");
frame.add(label);

choiceA = new JRadioButton("A", true);

//this if statement happens even if I click on one of the other radio buttons and if I leave this one set to false then none of the events happen

choiceB = new JRadioButton("B");
choiceC = new JRadioButton("C");
choiceD = new JRadioButton("D");
frame.add(choiceA);
frame.add(choiceB);
frame.add(choiceC);
frame.add(choiceD);

group = new ButtonGroup();
group.add(choiceA);
group.add(choiceB);
group.add(choiceC);
group.add(choiceD);


checkButton = new JButton("Check");
frame.add(checkButton);

Handler handler = new Handler();
checkButton.addActionListener(handler);
choiceA.addActionListener(handler);
choiceB.addActionListener(handler);
choiceC.addActionListener(handler);
choiceD.addActionListener(handler);


}


public static void main (String args[]){
Quiz quiz = new Quiz();
quiz.frame.setResizable(false);
quiz.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
quiz.frame.setVisible(true);
}

private class Handler implements ActionListener{
public void actionPerformed(ActionEvent event){
checkButtonActionPerformed(event);

}

public void checkButtonActionPerformed(ActionEvent event){
Quiz quiz = new Quiz();
if(quiz.choiceA.isSelected()){
System.out.println("wow");
}
else if(quiz.choiceB.isSelected()){
System.out.println("not wow");
}
else if(quiz.choiceD.isSelected()){
System.out.println("why doesn't this work?");
}
}
}
}

我只想在选择每个字符串并按下 JButton 后打印出来,但它们都不起作用,除非我在运行代码之前将其中一个设置为 true,如果我这样做的话不管我检查了哪个单选按钮,当我点击 JButton 为我最初设置为 true 的那个执行 if 语句时

最佳答案

问题是您在 actionPerformed 方法中创建了一个新的 Quiz 实例...

public void checkButtonActionPerformed(ActionEvent event){
Quiz quiz = new Quiz();

这意味着您正在比较的不是屏幕上实际显示的内容。

如果Handler是一个内部类,你可以直接引用变量...

if(choiceA.isSelected()){...}

否则你应该将 Quiz 的引用传递给 Handler 以供它使用,但我建议这会变得更复杂,实际上需要一些一种可以判断已选择什么的 getter 方法

关于java - 我的单选按钮没有与我的 JButton 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com