как отличить три combox в форме, используя Java? - PullRequest
0 голосов
/ 30 декабря 2011

Я создал форму с тремя JComboBox в ней, используя модель MVC.мой класс контроллеров унаследован от 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;
        }
    }

внутри контроллера.во время выполнения внутри контроллера?

Ответы [ 3 ]

1 голос
/ 30 декабря 2011

В вашей подпрограмме createCombobox добавьте что-то вроде

jcmb.setName(dataType);

Тогда внутри вашего контроллера вы можете идентифицировать каждого из них по имени:

comboBox.getName();

Просто задайте константы имен, которые вы разделяете между классами, которым нужно имя.

1 голос
/ 30 декабря 2011

Вы можете использовать метод setName(String name) из класса Component.

Кстати. 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));
0 голосов
/ 30 декабря 2011

Для получения выбранного элемента для 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...