如何使用 JRadioButtons 改变组合框

How to use JRadioButtons to change a ComboBox

我如何使用 RadioButton select 组合框中显示的内容,即单击(按钮(男)或(女)) 并获得一个下拉组合框,显示 (combobox(Mr, master) 或 (Mrs,miss))

在过去的几个小时里,我一直在努力找出可行的方法。 我以为我需要的只是创建一个 actionListener 来根据单击的按钮为组合框设置不同的数组,但我似乎无处可去。

这是我目前所拥有的

   `male = new JRadioButton("Male", true); 
    female = new JRadioButton("Female", false);
    add(male);
    add(female);

    buttonGroup = new ButtonGroup();
    buttonGroup.add(male);
    buttonGroup.add(female);

    radioListener radio = new radioListener();

    male.addActionListener(radio);
    female.addActionListener(radio);

    JComboBox nameTitle = new JComboBox(); 

    add(nameTitle);`

}

public class radioListener implements ActionListener{

    public void actionPerformed(ActionEvent e) {
        if(male.isSelected()) nameTitle.setSelectedItem(maleTitles);

        if(female.isSelected()) nameTitle.setSelectedItem(femaleTitles);
    }

}

开始于

这将帮助您设置按钮、设置按钮组并编写 ActionListener,当其中一个按钮被选中时将触发。

然后转到 How to Use Combo Boxes,这将帮助您构造适当的 ComboBoxModel,代表您希望在每个按钮中关联的值。

现在,当 ActionListener 被触发时,您选择合适的模型并将其应用到 JComboBox

这最终对我有用

使用预先存在的数组并使用 actionListeners 将它们替换到组合框中的方法似乎不起作用,所以我从不同的角度来看它并使用 DefaultComboBoxModel 在组合框中添加和删除元素根据单击的单选按钮和 actionListeners 响应

这不是完整的代码,只是主要元素的可视化示例:

private DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>();

    // Male/Female radio buttons
    male = new JRadioButton("Male", true); 
    female = new JRadioButton("Female", false);
    add(male);
    add(female);

    buttonGroup = new ButtonGroup();
    buttonGroup.add(male);
    buttonGroup.add(female);


    // Title box MR/Mrs selection
    radioListener radio = new radioListener();  
    male.addActionListener(radio);
    female.addActionListener(radio);    

// Used to set default combo box if there is no user selection
    model.addElement("Mr");
    model.addElement("Master");

    JComboBox nameTitle = new JComboBox(model);

    add(nameTitle);

    public class radioListener implements ActionListener{

    public void actionPerformed(ActionEvent e) {
        if(male.isSelected()){
            model.removeAllElements();
            model.addElement("Mr");
            model.addElement("Master");
        }

        if(female.isSelected()){
            model.removeAllElements();
            model.addElement("Mrs");
            model.addElement("Miss");
        }
    }