多个 jradiobutton 的 actionlistener

actionlistener for multiple jradiobutton

我有一个位于 for 循环内的多个 jradiobutton,我试图在其上放置监听器,这就是我发现的:

Action listener for multiple radio buttons

Create two dimensional JRadioButton array like

    JRadioButton[][] jRadioButtons = new JRadioButton[8][];
    ButtonGroup bg = new ButtonGroup();
    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(8, 8));
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            JRadioButton btn = new JRadioButton();
            btn.addActionListener(listener);
            btn.setName("Btn[" + i + "," + j + "]");
            bg.add(btn);
            panel.add(btn);
            // can be used for other operations
            jRadioButtons[i][j] = btn;
        }
    }

Here is single ActionListener for all JRadioButtons

ActionListener listener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JRadioButton btn = (JRadioButton) e.getSource();
        System.out.println("Selected Button = " + btn.getName());
    }
};

我有点明白了,但我还没有澄清:

  1. 二维 jradiobutton 的用途是什么?我的意思是我有点看到它是为 jradiobuttons 设置一个名称,但据我所知,它仅用于显示。是的,确认那是您选择的 jradiobutton,但我不明白放置 actionlistener
  2. 的目的是什么
  3. 二维 jradiobutton 真的有必要吗?
  4. 我可以只使用 jradiobuttons 的名称吗

做这样的事情:

if(NameOfJRadioButton.isSelected())

{

//some procedures

}

^(我似乎无法将其转换为代码:/)

如果可以,我该怎么做?或者您对如何为多个 jradiobuttons 设置监听器有任何其他建议吗?感谢您的任何建议:)

关于你的第一点和第二点,二维数组的原因是未知的,因为它不是你的代码,但对于使用 JRadioButtons 来说根本不是必需的。但是,将所有按钮放在某种类型的数组中很有用,无论它是数组列表还是按钮组(按钮的摆动列表),以便在调用操作时使用按钮检查内容。例如在你的第三点,这个数组列表将允许你遍历并检查哪些按钮已经被 selected 并采取相应的行动。

动作侦听器的目的是在用户单击按钮时执行动作。最普遍的用途是让用户只允许 select 一定数量的 JRadioButtons 或在它们被 selected 后禁用它们。例如在角色 selection 菜单。