Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка событии JComboBox / 5 сообщений из 5, страница 1 из 1
29.07.2014, 06:54
    #38707725
LiQuid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка событии JComboBox
Всем привет. У меня такой код:

Добавляю из БД список в CompanyList компании, при выборе компании загружается список сотрудников в другой список RespUsersList:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
companyVec = _safetyDatabase.getCompanyList();
		 for (int i = 0; i < companyVec.size(); i++) {
			_CompanyList.addItem(companyVec.elementAt(i).toString());
		}
		_CompanyList.addActionListener (new ActionListener () {
			public void actionPerformed(ActionEvent e) {
				if (_CompanyList.getSelectedIndex() > 0) {
					_RespUsersList.removeAllItems();
					respUsersVec = _safetyDatabase.getRespUsersList(_CompanyList.getSelectedItem().toString());
					for (int i = 0; i < respUsersVec.size(); i++) {
						_RespUsersList.addItem(respUsersVec.elementAt(i).toString());
					}

				}

			}
	    });	



А это событие RespUsersList просто должен присвоить значение выбранной записи из списка переменным:

Код: java
1.
2.
3.
4.
5.
6.
		_RespUsersList.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				 RespPersonID = _RespUsersList.getSelectedIndex() + 1;
			     RespPersonName = _RespUsersList.getSelectedItem().toString();
	        }
	    });



Выбираю компанию, список сотрудников загружается в компонент RespUsersList, при выборе след. компании выкидывает ошибку как будто список RespUsersList пустой:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at SafetyInspectionRegister.AddSafetyDialog$1.itemStateChanged(AddSafetyDialog.java:217)
	at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)
	at javax.swing.JComboBox.selectedItemChanged(Unknown Source)
	at javax.swing.JComboBox.contentsChanged(Unknown Source)
	at javax.swing.JComboBox.intervalRemoved(Unknown Source)
	at javax.swing.AbstractListModel.fireIntervalRemoved(Unknown Source)
	at javax.swing.DefaultComboBoxModel.removeAllElements(Unknown Source)
	at javax.swing.JComboBox.removeAllItems(Unknown Source)
	at SafetyInspectionRegister.AddSafetyDialog$2.actionPerformed(AddSafetyDialog.java:228)
	at javax.swing.JComboBox.fireActionEvent(Unknown Source)
	at javax.swing.JComboBox.setSelectedItem(Unknown Source)
	at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
	at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
....



Не могу понять, при выборе компании я сначало удаляю из списка _RespUsersList список сотрудников чтобы не добавлялось одно на другое, а он ругается как будто список пустой.
Кто нибудь подскажите как правильно работать со взаимосвязанными JComboBox да так чтобы при выборе из одного списка загружались данные в другой список и при повторном выборе из первого списка уже другого значения чтобы во втором списке старые данные удалялись а новые загружались.
Спасибо.
...
Рейтинг: 0 / 0
29.07.2014, 09:28
    #38707794
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка событии JComboBox
А что за вырвиглазный coding convention?

LiQuidвыкидывает ошибку как будто список RespUsersList пустой
Трудно угадывать где именно у вас 217-я строка. Почему вы решили что именно список пустой? Может getSelectedItem() вернул null потому что ничего не выбрано?

LiQuidКто нибудь подскажите как правильно работать со взаимосвязанными JComboBox да так чтобы при выборе из одного списка загружались данные в другой список и при повторном выборе из первого списка уже другого значения чтобы во втором списке старые данные удалялись а новые загружались.
Странно. Примеров должно быть масса в инете. Вам точно нужен Swing? На JavaFX через биндинг делается проще.
По-хорошему я бы сильнее разделил View от Model.
removeAllItems() + addItem() - не нужны. Я бы просто использовал combobox.setModel(new MyDataModel(myData)). Или бы даже пере-использовал Model.
Изучите концепцию Model в Swing и PropertyChangeSupport/PropertyChangeEvent/PropertyChangeListener - очень полезно для правильной работы с данными.
...
Рейтинг: 0 / 0
29.07.2014, 09:32
    #38707797
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка событии JComboBox
Вот, например.
http://stackoverflow.com/questions/6246005/jcombobox-change-another-jcombobox

По-хорошему, если вы нацелены разрабатывать на Swing всерьез и на долго, то стоит так же ознакомиться с реализациями binding для Swing и паттерном Model-View-ViewModel
https://netbeans.org/kb/docs/java/gui-binding.html
https://kenai.com/projects/betterbeansbinding/pages/Home
...
Рейтинг: 0 / 0
29.07.2014, 15:13
    #38708243
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка событии JComboBox
Гораздо проще переопределить метод toString() вашего entity (или dto) объекта, чтобы он возвращал имя элемента, и потом просто кидать список готовых объектов в модель JComboBox.
Код: java
1.
firstComboBox.setModel(new javax.swing.DefaultComboBoxModel(myList().toArray()));


Тогда при выборе элемента в JComboBox вы получаете уже готовый объект, из которого можно брать любые свойства и по ним ваши действия производить, например, выбрать связанные с этим объектом списки других объектов..
...
Рейтинг: 0 / 0
29.07.2014, 15:23
    #38708255
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка событии JComboBox
mesierГораздо проще переопределить метод toString() вашего entity (или dto) объекта, чтобы он возвращал имя элемента, и потом просто кидать список готовых объектов в модель JComboBox.

Не стоит toString() применять, ни для реализации уровня представления, ни для бизнес логики. toString() это внутреннее отладочное представление объекта.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка событии JComboBox / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]