Problem z ComboBoxem

0

Witam serdecznie.
Napisałem kod klasy która powinna pozwalać użytkownikowi na wybieranie nazwy lokaty z listy rozwijalnej, następnie na podawanie kwoty z klawiatury, a na końcu powinna oddawać użytkownikowi zysk w postaci zarobionych pieniędzy. W tej chwili niestety po uruchomieniu programu pojawia się tylko lista rozwijalna z wszystkimi nazwami lokat, jednak po wybraniu jakiekolwiek nazwy nic się nie dzieje. Ma ktoś pomysł gdzie/w jaki sposób przerobić ten kod by program reagował na wybranie danej rzeczy z ComboBoxa?

Gdy w programie zamiast ComboBoxa jest zastosowane JOptionPane i nazwa także jest podawana z klawiatury program działa bez zarzutu.
Z góry dziękuje za pomoc.

package baza.gui;

import java.math.BigDecimal;
import java.sql.*;
import java.awt.*;

import javax.swing.*;

import baza.data.BDPolaczenie;

import com.mysql.jdbc.Statement;

import java.awt.event.*;

public class AddComboBoxItem extends JFrame{
	
	
	private static final long serialVersionUID = -1557861518746470132L;
	
	
	
	public AddComboBoxItem() {
	
	setTitle("Lista lokat");
	setSize(1200, 800);
	setResizable(false);
	setLocationRelativeTo(null);
	setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	setVisible(true);
	
	dzialanie();
	}


		
	public void dzialanie() {
		
			
		final JComboBox combo=new JComboBox();
		
		
			try{
				
				
				
				Statement stmt = (Statement) BDPolaczenie.getConnection().createStatement();
				ResultSet rs=stmt.executeQuery("SELECT nazwa FROM lokaty");
				while(rs.next()){
					combo.addItem(rs.getString(1));
					//System.out.println(rs.getString(1));
				}
			}
			catch(Exception e){
				
			}
									
			combo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				Object z = e.getSource();
				
				if ((Boolean) (z = combo))
				{
					String nazwa = combo.getSelectedItem().toString();
					
				
					String kwota = JOptionPane.showInputDialog(bOk, "Podaj kwote którą chcesz zainwestować: ");
		
		
				try {
					Statement stmt = (Statement) BDPolaczenie.getConnection().createStatement();
					ResultSet rs = stmt.executeQuery("SELECT czasTrwania, op_kwota_0_3000, op_kwota_3000_5000, op_kwota_5000_10000, op_kwota_ponad_10000, kapitalizacja FROM lokaty  WHERE nazwa = " +nazwa+"");
					while ( rs.next( ) ) {
							rs.getString(1);
							rs.getString(2);
							rs.getString(3);
							rs.getString(4);
							rs.getString(5);
							rs.getString(6);
			
							
							float k = Float.parseFloat(kwota);
							float czT = Float.parseFloat(rs.getString(1));
							float op1 = Float.parseFloat(rs.getString(2));
							float op2 = Float.parseFloat(rs.getString(3));
							float op3 = Float.parseFloat(rs.getString(4));
							float op4 = Float.parseFloat(rs.getString(5));
							float kap = Float.parseFloat(rs.getString(6));
							
							if (k<3000) {
							
								double obliczenia = Math.pow((1+((op1/100)/kap)), (czT/360)*kap);
								double wynik = k * obliczenia;
								double zysk = wynik - k;
								
								zysk=new BigDecimal(zysk).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
							JOptionPane.showMessageDialog(bZysk, "Zysk z lokaty wynosi " +zysk , "ZYSK",  JOptionPane.INFORMATION_MESSAGE);
							
						}
						else if( k>=3000 || k<5000){
							double obliczenia = Math.pow((1+((op2/100)/kap)), (czT/360)*kap);
							double wynik = k * obliczenia;
							double zysk = wynik - k;
							
							zysk=new BigDecimal(zysk).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
							
							
							JOptionPane.showMessageDialog(bZysk, "Zysk z lokaty wynosi " +zysk , "ZYSK",  JOptionPane.INFORMATION_MESSAGE);
							
						}
						else if (k>=5000 || k<10000) {
							double obliczenia = Math.pow((1+((op3/100)/kap)), (czT/360)*kap);
							double wynik = k * obliczenia;
							double zysk = wynik - k;
							
							zysk=new BigDecimal(zysk).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
							
							JOptionPane.showMessageDialog(bZysk, "Zysk z lokaty wynosi " +zysk , "ZYSK",  JOptionPane.INFORMATION_MESSAGE);
						}
						else if (k>=10000){
							double obliczenia = Math.pow((1+((op4/100)/kap)), (czT/360)*kap);
							double wynik = k * obliczenia;
							double zysk = wynik - k;
							
							zysk=new BigDecimal(zysk).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
							
							JOptionPane.showMessageDialog(bZysk, "Zysk z lokaty wynosi " +zysk , "ZYSK",  JOptionPane.INFORMATION_MESSAGE);
						}
						}
					}
					catch(Exception b)
					{
					
					}
				}
	}
	});
	}
}
0

Co, Twoim zdaniem, robi ten wiersz?

if ((Boolean) (z = combo))
0

Sprawdza do jakiego źródła należy zdarzenie i wykonuje zawarte instrukcje.

0

Siadaj, niedostateczny.

Po pierwsze, w if powinno być

if(z == combo)

Po drugie: tworzysz jeden listener i dodajesz go tylko do comboboxa - skąd indziej jak nie z comboboxa może przyjść event? Wywal to głupie sprawdzanie

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