Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JRadioButton获取值_Java_Jradiobutton - Fatal编程技术网

Java 从JRadioButton获取值

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

当我选择右键并单击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;
    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();
}