我使用MVC模型创建了一个包含三个JComboBoxes的表单。
我的控制器类是从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();


只需使名称常量在需要名称的类之间共享即可。

10-06 11:20