Search code examples
javaevent-handlingjcombobox

how to distinguish between three comboxes in a form using java?


I've created a form with three JComboBoxes in it using MVC model. my controller class is inherited from ItemListener

inside my form I have

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;
        }
    }

inside controller I have something

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


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


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

    }

}

so how can I understand which one is changed during runtime inside the controller?


Solution

  • In your createCombobox routine, add something like

    jcmb.setName(dataType);
    

    Then inside your controller, you could identify each of them by name:

    comboBox.getName();
    

    Simply make the names constants that you share between the classes that need the name.