如何使用java区分表单中的三个组合框



我使用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());
    }
}

所以我怎么能理解哪一个是在运行期间改变了控制器内部?

在createCombobox例程中,添加如下内容

jcmb.setName(dataType);

然后在你的控制器中,你可以通过名字来识别它们:

comboBox.getName();

只需将这些名称设置为常量,以便在需要该名称的类之间共享。

您可以使用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));

要获取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();

最新更新