Java 从JRadioButton获取值
当我选择右键并单击JRadio框架上的“ok”时,我想更改变量“name”的值 例如,当我选择r1并点击“ok”时,我希望整个包中的name==“Fast”Java 从JRadioButton获取值,java,jradiobutton,Java,Jradiobutton,当我选择右键并单击JRadio框架上的“ok”时,我想更改变量“name”的值 例如,当我选择r1并点击“ok”时,我希望整个包中的name==“Fast” package Snake; public class Radio extends JFrame { private int delay = 100; private String name; JTextField t1; JButton b; JRadioButton r1, r2; JLa
package Snake;
public class Radio extends JFrame {
private int delay = 100;
private String name;
JTextField t1;
JButton b;
JRadioButton r1, r2;
JLabel l;
public void selectSpeed() {
b = new JButton("Ok");
r1 = new JRadioButton("Fast");
r2 = new JRadioButton("Slow");
l = new JLabel("Speed: ");
ButtonGroup bg = new ButtonGroup();
bg.add(r1);
bg.add(r2);
add(b);
add(r1);
add(r2);
add(l);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (r1.isSelected()) {
name = "Fast";
} else {
name = "Slow";
}
l.setText("Speed: " + name); // name=="Fast" when r1 is selected
} // name=="Slow" when r2 is selected
});
if (name == "Fast") { // and now name is empty...
delay = 50;
}
if (name == "Slow") {
delay = 500;
}
setLayout(new FlowLayout());
setSize(400, 400);
setVisible(true);
}
public int setSpeed() {
selectSpeed();
return delay;
}
}
您需要在JRadioButton侦听器中执行此操作。例如,如这里所示,首先更改变量“name”,然后在当前侦听器中检查条件,但需要记住,要比较字符串,需要使用“equals”:
您需要在JRadioButton侦听器中执行此操作。例如,如这里所示,首先更改变量“name”,然后在当前侦听器中检查条件,但需要记住,要比较字符串,需要使用“equals”:
如果要更改
按钮上的延迟
,则需要在ActionListener
本身中写入逻辑,因为为更改延迟
而编写的代码将只运行一次,并且在程序开始执行时也会运行一次,此时,名称
将为空
然后,当您单击该按钮时,它将只执行ActionListener
,因此delay
在任何时候都不会更改。您正在犯的另一个错误是,您以错误的方式比较字符串。有关更多信息,请查看它
要在单击按钮时动态更改延迟,您需要在ActionListener
中更改它
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (r1.isSelected()) {
name = "Fast";
delay = 50;
} else {
name = "Slow";
delay = 500;
}
l.setText("Speed: " + name); // name=="Fast" when r1 is selected
} // name=="Slow" when r2 is selected
});
如果要更改按钮上的延迟
,则需要在ActionListener
本身中写入逻辑,因为为更改延迟
而编写的代码将只运行一次,并且在程序开始执行时也会运行一次,此时,名称
将为空
然后,当您单击该按钮时,它将只执行ActionListener
,因此delay
在任何时候都不会更改。您正在犯的另一个错误是,您以错误的方式比较字符串。有关更多信息,请查看它
要在单击按钮时动态更改延迟,您需要在ActionListener
中更改它
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (r1.isSelected()) {
name = "Fast";
delay = 50;
} else {
name = "Slow";
delay = 500;
}
l.setText("Speed: " + name); // name=="Fast" when r1 is selected
} // name=="Slow" when r2 is selected
});
我现在明白我的错误了,谢谢
但它仍然不能按我喜欢的方式工作。每次我在JRadio上选择右键并点击“ok”时,我都想更改“delay”值,用这个更改后的值我想转到另一个类
有一个类的代码,我需要“delay”的值:
我现在明白我的错误了,谢谢
但它仍然不能按我喜欢的方式工作。每次我在JRadio上选择右键并点击“ok”时,我都想更改“delay”值,用这个更改后的值我想转到另一个类
有一个类的代码,我需要“delay”的值:
可能的重复可能的重复
package Snake;
public class Gameplay extends Paint implements KeyListener, ActionListener {
private Timer timer;
private int q = 0;
Radio radio = new Radio();
public Gameplay() {
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
timer = new Timer(radio.selectSpeed(), this); //here i need flexible "delay" value
timer.start();
}