Итерация по хэш-карте и добавление элементов в качели jcombobox

Я работаю над своим первым Java-приложением, и я застрял в этой части, где мне нужно заполнить поле со списком элементами из хэш-карты.

Я использую подход Model View Controller и пытаюсь заполнить поле со списком из графического интерфейса. Таким образом, после того, как пользователь нажимает кнопку, вызывается метод, который должен обращаться к контроллеру и запрашивать элементы для поля со списком. Контроллер должен отправить элементы обратно в графический интерфейс, и поле со списком может быть заполнено.

Итак, в одном из файлов моей модели я создаю хэш-карту и добавляю в нее элементы через свой контроллер.

Хэш-карта выглядит так:

HashMap<Integer, Customer> customerRegisterHashMap = new HashMap<Integer, Customer>();

Предположим, что карта теперь заполнена демонстрационными данными в соответствии с атрибутами класса Customer.

Теперь я предполагаю, что мне нужно реализовать метод либо в контроллере, либо в самой модели, который выполняет итерацию по приведенной выше хэш-карте и возвращает данные (коллекцию?).

Я бы (еще одно предположение, возможно, не обязательно) нужно было бы еще раз перебрать эти данные, только на этот раз в классе GUI и добавить элементы в поле со списком один за другим.

Итак, проект выглядит так: 5 файлов, Controller, Customerregister, Customer, Frame и файл приложения, который отображает Frame.

Большое спасибо за любой совет.


person JavaNewb    schedule 06.01.2013    source источник
comment
Кажется, все в порядке. Пожалуйста, укажите свой вопрос, если есть что-то, что вы не можете понять, и вам нужна помощь.   -  person atomman    schedule 06.01.2013
comment
для получения дополнительной помощи скорее опубликуйте SSCCE, короткий, исполняемый, компилируемый, примерно JFrame с одним JComboBox и жестко заданным значением в HashMap, splitted (your view) to MVC `   -  person mKorbel    schedule 06.01.2013
comment
Вот SSCCE. 22 КБ Zip не составляют 1 SSCCE! Сделайте пример достаточно коротким, чтобы опубликовать его как редактирование вопроса.   -  person Andrew Thompson    schedule 07.01.2013


Ответы (1)


Это может дать вам представление:

HashMap<Integer, Customer> stuff = new HashMap<Integer, Customer>();
stuff.put(0, new Customer());
stuff.put(2, new Customer());
Iterator it = stuff.keySet().iterator();
while(it.hasNext())
{
    ComboBox.addItem(stuff.get(it.next()));
}

Вы можете передать HashMap в своем приложении, а затем просто добавить что-то из него в JComboBox, как указано выше.

person ldam    schedule 06.01.2013
comment
HashMap будет повторяться в непредсказуемом порядке, поэтому записи в вашем ComboBox всегда будут смешиваться случайным образом. Я не знаю, является ли это проблемой для вас, но, возможно, лучше использовать TreeMap (будет работать с целочисленными ключами, повторяющимися в отсортированном порядке) или LinkedHashMap (будет выполнять итерацию в том порядке, в котором ключи были добавлены). - person Audrius Meskauskas; 06.01.2013
comment
Спасибо. В этом случае проблема, с которой я сталкиваюсь, заключается в том, как перебирать хэш-карту, когда проект следует дизайну MVC. В вашем примере вы добавляете данные и выполняете поиск по всем данным из одного класса. Вместо этого мне нужно написать метод, который может получить доступ к хэш-карте и вернуть данные, которые можно использовать в дальнейшем (предположительно другим методом), чтобы добавить все возвращаемые элементы в рассматриваемое поле со списком. Итак, вопрос в том, как будут выглядеть эти 2 метода (если это действительно правильный способ сделать это). - person JavaNewb; 07.01.2013
comment
Как я уже сказал, вы можете просто передать HashMap в своей программе или (вероятно, плохая идея) сделать статический или общедоступный, к которому могут получить доступ все ваши классы. - person ldam; 07.01.2013
comment
Спасибо, это помогло мне. - person JavaNewb; 08.01.2013