Swing dwa zależne od siebie Jcombobox

0

W pierwszym jcomboBox wybieram date w następnym wyświetla się waluty z danego dnia, a na końcu jako textfield kurs. Mam problem ze zdarzeniami, ponieważ jak wyczyszczę jcomboBox z walutami comboBox_1.removeAllItems(). comboBox.getSelectedItem() jest null przez to wyskakuje mi nullpointexception.

private void createEvents() {

		comboBox.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
			
				
				comboBox_1.removeAllItems();
				for (Date date : dataList) {

					if (comboBox.getSelectedItem().equals(date.getXmlDate())) {
						List<Pozycja> list = date.getPozycje();

						for (Pozycja pozycja : list) {
							if(comboBox_1!=null){
							comboBox_1.addItem(pozycja.getNazwaWaluty());

							
					}
				}

			}

		});
		comboBox_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				for (Date date : dataList) {
					if (comboBox.getSelectedItem().equals(date.getXmlDate())) {
						List<Pozycja> list = date.getPozycje();

						for (Pozycja pozycja : list) {
							if (comboBox_1.getSelectedItem().equals(pozycja.getNazwaWaluty())) {
								label_1.setText(String.valueOf(pozycja.getPrzelicznik()));
								label.setText(pozycja.getKursSredni());

							}
						}
					}

				}
			}
		});

		btnNewButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				double kursSredni = Double.parseDouble(label.getText().replace(",", "."));
				double przelicznik = Double.parseDouble(label_1.getText().replace(",", "."));
				double ilosc = Double.parseDouble(textField.getText().replace(",", "."));
				double oblicz = ilosc * kursSredni;
				System.out.println(Double.toString(oblicz));
				textField_2.setText(Double.toString(oblicz));
			}
		});

	}
0

Wrzuciłbyś kompletny kod? Bo z tego co załączyłeś - ciężko wywnioskować kilka rzeczy :)

0

Leci Ci null ponieważ w implementacji akcji comboBox usuwasz wszystkie elementy z comboBox_1, co z kolei powoduje odpalenie actionPerformed dla tego komponentu. Zrób zabezpieczenie przed nullem, tak jak zrobiłeś w comboBox,
Np. coś takiego:

 
comboBox_1.addActionListener(new ActionListener() {
(...)
if (comboBox.getSelectedItem() != null && comboBox.getSelectedItem().equals(date.getXmlDate())) {
(...)
}

Powinno pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1