Cześć,
Chodzi o to, że po wstawieniu nowej wartości do bazy chciałabym, żeby pojawiła się ona w combobox'ie (jComboBoxTypLampy). Wywoływana procedura sql zwraca "TAK" jeśli podana wartość nie występowała w bazie i zostaje zapisana lub "NIE" jeśli wartość już istniała i nie zostaje zapisana. Ta część na pewno działa i zwraca oczekiwane wartości.
Problem w tym, ze nawet po zmianie flagi na "TAK" kompilator nie wchodzi w w if(n.flaga){} w poniższym kodzie:
public class Tylko_Run implements Runnable
{
@Override
public void run() {
boolean flaga1 = true;
while(flaga1){
if(n.flaga){
jComboBoxTypLampy.addItem(n.dany_typ);
flaga1 = false;
jComboBoxTypLampy.repaint();
System.out.println("dsgs");
}
//System.out.println("dsgghfhgs");
}
}
}
fragment kodu, wywołuje klasę, w której wszystko się dzieje:
n= new NoweDane1();
n.setLocationRelativeTo(null);
n.ustawPolecenie("Podaj nowy typ:");
n.ustawStatus("typ");
n.setVisible(true);
(new Thread(new Tylko_Run())).start();
oraz klasa:
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
public class NoweDane1 extends javax.swing.JFrame {
private JComboBox combobox1;
public boolean flaga;
private MojResultSet mrs;
public NoweDane1() {
initComponents();
// combobox1 = combobox;
flaga = false;
}
String procedura;
String status = "nieokreslony";
String czy_zapisano = "NIE";
String dany_typ = null;
public void ustawPolecenie(String polecenie){
jLabel1.setText(polecenie);
}
/*public void ustawProcedure(String procedura){
this.procedura = procedura;
}*/
public void ustawStatus(String status){
this.status = status;
}
void dodajTyp(){
dany_typ = jTextFieldNowaDana.getText();
mrs = new MojResultSet();
if ("".equals(dany_typ)){
JOptionPane.showMessageDialog(this, "Nie podano żadnej wartości. Proszę podać nową wartość.");
}
else{
ResultSet rs = mrs.wybierz("NOWY_TYP", 0, "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, dany_typ, 0, 0, 0, 0, 0);
try {
while(rs.next()){
String s = rs.getString("flaga");
System.out.println(s);
if ("TAK".equals(s))
flaga = true;
}
rs.close();
mrs.zamknijCallableStatement();
mrs.zamknijPolaczenie();
} catch (SQLException ex) {
Logger.getLogger(NoweDane1.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jTextFieldNowaDana = new javax.swing.JTextField();
jButtonZapiszNowyTyp = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jButtonZapiszNowyTyp.setText("Zapisz");
jButtonZapiszNowyTyp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonZapiszNowyTypActionPerformed(evt);
}
});
jButton1.setText("Anuluj");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(37, 37, 37)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(86, 86, 86))
.addGroup(layout.createSequentialGroup()
.addComponent(jTextFieldNowaDana, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonZapiszNowyTyp)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addGap(0, 28, Short.MAX_VALUE))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonZapiszNowyTyp)
.addComponent(jTextFieldNowaDana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addContainerGap(31, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButtonZapiszNowyTypActionPerformed(java.awt.event.ActionEvent evt) {
switch(status){
case "typ":
dodajTyp();
// if("Zapisano!".equals(mrs.jkomunikat)){
/// flaga = true;
// }
}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButtonZapiszNowyTyp;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextFieldNowaDana;
// End of variables declaration
}
Czy ktoś może wie czemu tak się dzieje?
Z góry dzięki za odpowiedź