如何使用JRadioButtons更改ComboBox

时间:2015-10-22 23:37:11

标签: java swing jcombobox jradiobutton

如何使用RadioButton选择单击后显示的组合框中显示的内容(按钮(男性)或(女性)) 并获得一个组合框下拉显示(组合框(先生,大师)或(太太,小姐))

我花了几个小时试图弄清楚会有什么用。 我认为我需要的只是创建一个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);
    }

}

2 个答案:

答案 0 :(得分:2)

开始

这将帮助您设置按钮,设置按钮组并写入ActionListener,当选择其中一个按钮时,将会触发该按钮。

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

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

答案 1 :(得分:0)

这最终对我有用

使用预先存在的数组并使用actionListeners将它们替换为comboBox的方法似乎不起作用所以我从不同的角度来看它并使用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");
        }
    }