我是Java的新堆栈用户,并且是Java的新手,因此如果仍然不清楚或使用了错误的术语,请提前道歉。
如果没有对JRadioButton进行选择,我希望分配一个基值。
我可以将JRadioButton设置为true,它将自动选择但不会与侦听器一起出现,因为没有事件?
我可以设置else语句,但是由于它在等待侦听器事件而又没有发生任何事情?
以下代码似乎可以与我一起使用,将值设置为double first。
我的问题是,尽管我为变量$ leadtime分配了正确的值,但系统输出返回其值4次,有人可以解释一下此事件吗?
或者,如果有更好的方法可以做到这一点,那我会乐于学习,或者两次尝试都忽略了某些东西?
谢谢,
周末战士84
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JRadioButton;
public class CRADIOHAND implements ActionListener{
JRadioButton $test1;
JRadioButton $test2;
JRadioButton $test3;
JRadioButton $test4;
double $leadtime = 22;
CRADIOHAND(JRadioButton $buttonJR1,JRadioButton $buttonJR2,JRadioButton $buttonJR3,JRadioButton $buttonJR4){
$test1 = $buttonJR1;
$test2 = $buttonJR2;
$test3 = $buttonJR3;
$test4 = $buttonJR4;
System.out.println($leadtime);
}
public void actionPerformed(ActionEvent re1) {
if($test1.isSelected()){
$leadtime= 22;
}else if($test2.isSelected()){
$leadtime= 47;
}else if($test3.isSelected()){
$leadtime= 113;
}else if($test4.isSelected()){
$leadtime= 130;
}
System.out.println($leadtime);
}
}
缩短布局。
import java.awt.FlowLayout;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
public class CLAYOUT extends JFrame {
private FlowLayout $lay;
public CLAYOUT(){
super("Sample Program");
$lay = new FlowLayout();
setLayout($lay);
JRadioButton $buttonJR1 = new JRadioButton("22 Days");
add($buttonJR1);
JRadioButton $buttonJR2 = new JRadioButton("47 Days");
add($buttonJR2);
JRadioButton $buttonJR3 = new JRadioButton("113 Days");
add($buttonJR3);
JRadioButton $buttonJR4 = new JRadioButton("130 Days");
add($buttonJR4);
ButtonGroup radiogroup = new ButtonGroup();
radiogroup.add($buttonJR1);
radiogroup.add($buttonJR2);
radiogroup.add($buttonJR3);
radiogroup.add($buttonJR4);
$buttonJR1.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
$buttonJR2.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
$buttonJR3.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
$buttonJR4.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
}
}
主缩短
import javax.swing.JFrame;
public class CREORDER{
public static void main (String[] args){
CLAYOUT $clay = new CLAYOUT();
$clay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
$clay.setSize(1200,500);
$clay.setVisible(true);
}
}
最佳答案
实际上,单击RadioButton只能打印一次结果。但是最初22.0的四次打印是因为您在构造函数CRADIOHAND
中编写了这一行。
System.out.println($leadtime);
因此,在每次调用
CRADIOHAND
中CLAYLAYOUT
的构造函数的位置: $buttonJR1.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
$buttonJR2.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
$buttonJR3.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
$buttonJR4.addActionListener(new CRADIOHAND($buttonJR1, $buttonJR2, $buttonJR3, $buttonJR4));
SOP
的构造函数中的CRADIOHAND
在行中调用4次。因此解决方案是在System.out.println($leadtime);
构造函数中注释或删除CRADIOHAND
。注意:作为旁注。我想建议您在编写代码时坚持使用Java命名约定。例如:类名始终以大写字母开头。变量名总是以小写字母开头。常量(即Final变量)的所有字母都大写。还有很多。看一下oracle的official site。