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)
{
}
}
}
});
}
}