如何使用java区分表单中的三个combox?

时间:2011-12-30 18:45:14

标签: java event-handling jcombobox

我使用MVC模型创建了一个包含三个JComboBox的表单。 我的控制器类继承自ItemListener

我的表格中有

createCombobox(mypane , "year");
createCombobox(mypane , "month");
createCombobox(mypane , "day");

private void createComboBox( Container container,String datatype)
    {
        JComboBox jcmb = new JComboBox();
        jcmb.addItemListener(listener);
        container.add(jcmb);
        switch(datatype.toLowerCase())
        {
            case "year":
                v_ctl.addYearsToCombobox(jcmb);
                break;
            case "month":
                v_ctl.addMonthsToCombobox(jcmb);
                break;
            case "day":
                v_ctl.addDaysToComboBox(jcmb);
                break;
        }
    }

控制器内部我有一些东西

public class ComboBoxItemListener implements ItemListener
{
    @Override
    public void itemStateChanged(ItemEvent event) {


        JComboBox comboBox = (JComboBox)event.getSource();


        System.out.println(event.getSource().toString());

    }

}

那么如何才能理解在控制器内运行期间哪一个被更改?

3 个答案:

答案 0 :(得分:1)

在您的createCombobox例程中,添加类似

的内容
jcmb.setName(dataType);

然后在您的控制器内,您可以按名称识别每一个:

comboBox.getName();

只需在需要名称的类之间创建名称常量。

答案 1 :(得分:1)

您可以使用Component类中的setName(String name)方法。

顺便说一句。 Java不支持String作为case元素。而不是你应该使用ComboBoxModel来提供内容。

protected void createComboBox(String name, CoboBoxModel model, ItemListener itemListener)
{
        JComboBox jcmb = new JComboBox(model);
         jcmb.setName(name);
         jcmb.addItemListener(listener);
        return jcmb;
}

然后这种接缝更方便

container.add(createCombobox("day", model, listener));

答案 2 :(得分:0)

要获取JComboxBox的选定项目,您可以执行

String value = (String)comboBox.getSelectedItem();

好的,您可以为组合框设置名称:

    switch(datatype.toLowerCase())
    {
        case "year":
            jcmb.setName("year");
            v_ctl.addYearsToCombobox(jcmb);
            break;
        case "month":
            jcmb.setName("month");
            v_ctl.addMonthsToCombobox(jcmb);
            break;
        case "day":
            jcmb.setName("jcmb");
            v_ctl.addDaysToComboBox(jcmb);
            break;
    }

在你的听众中:

    String changedComboBoxName = comboBox.getName();