JRadiobutton ActionListener没有回应

use*_*135 0 java user-interface swing

我正在为两个JRadiobuttons注册事件,但没有任何反应!没有错误,所以我无法追溯问题..当选择第一个单选按钮时,它应该打印出一个文本.选择第二个按钮时,应打印出不同的文本....

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class num2 extends JFrame  {
    private static JLabel type;
    private static JLabel days;
    private static JLabel amt;
    private static JRadioButton checkStandard;
    private static JRadioButton checkExecutive;
    private static JTextField txtDays;
    private static JTextField txtAmount;
    private static JButton btnCalculate;
    private static ButtonGroup group = new ButtonGroup();

    public num2(){
        super("Testing Events");
        JPanel p = new JPanel();
        JLabel type = new JLabel("Room Type : ");
        JLabel days = new JLabel("Number Of Days : ");
        JLabel amt = new JLabel("Total Amount : ");

        JRadioButton checkStandard = new JRadioButton("Standard");
        JRadioButton checkExecutive = new JRadioButton("Executive");




        p.setLayout(new FlowLayout());


        group.add(checkStandard);
        group.add(checkExecutive);
        p.add(checkStandard);
        p.add(checkExecutive);
        TheHandler handler = new TheHandler();
        checkStandard.addActionListener(handler);
        checkExecutive.addActionListener(handler);
        add(p);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(100, 100);
        setVisible(true);

    }

    public static void main(String[] args) {
        num2 app = new num2();


    }


private class TheHandler implements ActionListener{
    public void actionPerformed(ActionEvent evt) {
        Object source = evt.getSource();
        if (source == checkStandard) {
            System.out.println("Done");
         }
        else if(source == checkExecutive){
            System.out.println("nope");
        }

}
}



}
Run Code Online (Sandbox Code Playgroud)

Rei*_*eus 5

你正在影响这两个JRadioButton变量

JRadioButton checkStandard = new JRadioButton("Standard");
JRadioButton checkExecutive = new JRadioButton("Executive");
Run Code Online (Sandbox Code Playgroud)

应该

checkStandard = new JRadioButton("Standard");
checkExecutive = new JRadioButton("Executive");
Run Code Online (Sandbox Code Playgroud)

  • +1键入更快,但我也忙着打字你不应该使用静态变量,因为这是没有必要的. (2认同)