2016-07-11 4 views
0

У меня есть jComboBox, который получает данные из базы данных сервера MySQL.Как обновить jComboBox после обновления?

Когда я добавляю новые данные в базу данных, jComboBox не отображает его, и я должен снова открыть свою программу, чтобы добавить новые данные в jComboBox.

Как я могу обновить данные jComboBox?

Это мой код:

private void dataComboBox(){ 
    try { 
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root",""); 
     Statement stat = con.createStatement(); 
     String sql = "select id from perfume order by id asc";  
     ResultSet res = stat.executeQuery(sql);        
     while(res.next()){ 
      Object[] ob = new Object[3]; 
      ob[0] = res.getString(1); 
      jComboBox5.addItem(ob[0]);          
     } 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, e); 
    } 
} 


private void showCBdata(){ 
    try { 
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root",""); 
     Statement stat = con.createStatement(); 
     String sql = "select name from perfume where id='"+jComboBox5.getSelectedItem()+"'"; 
     ResultSet res = stat.executeQuery(sql); 

    while(res.next()){ 
     Object[] ob = new Object[3]; 
     ob[0]= res.getString(1);    
     jTextField8.setText((String) ob[0]); 
    } 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } 
} 


//call method 
private void jComboBox5ActionPerformed(java.awt.event.ActionEvent evt) {           
    showCBdata(); 
} 

вы можете мне помочь?

спасибо ..

ответ

1

Вы можете сделать это таким образом, он будет автоматически обновлять метод combobox

try { 
      comboBox.removeAllItems(); 

      sql = "SELECT * FROM `table_name`"; 
      rs = stmnt.executeQuery(sql); 

     while (rs.next()) { 
      String val = rs.getString("column_name"); 
      comboBox.addItem(val); 
     } 
    } catch (SQLException ex) { 
     Logger.getLogger(DefineCustomer.class.getName()).log(Level.SEVERE, null, ex); 
    } 

removeAllItems(); уберет выпадающий, чтобы гарантировать, что не повторить значения.
Вам не нужно создавать отдельные Object, чтобы добавить их в jComboBox, вместо этого вы можете добавить String.

0

код Inzimam Тарика это (выше):

try { 
      comboBox.removeAllItems(); 

      sql = "SELECT * FROM `table_name`"; 
      rs = stmnt.executeQuery(sql); 

     while (rs.next()) { 
      String val = rs.getString("column_name"); 
      comboBox.addItem(val); 
     } 
    } catch (SQLException ex) { 
     Logger.getLogger(DefineCustomer.class.getName()).log(Level.SEVERE, null, ex); 
    } 

Я предлагаю положить весь этот код внутри ActionListener. Так что каждый раз, когда мышь вводится над comboBox, этот код будет работать. Вы должны сделать следующее:

public void mouseEntered(MouseEvent e) { 
     //the above code goes here 
    } 

Я предлагаю использовать mouseListener: https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

Но если вы хотите посмотреть на другие ActionListeners вы можете увидеть их здесь: https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

0

После того, как вы добавляете новый реестр в БД, выполните removeAllItems comboBox.removeAllItems(); и repopulate de combobox, Мой пример:

jComboLicorerias.removeAllItems(); 

try { 
     Conector = Conecta.getConexion(); 
     Statement St = Conector.createStatement(); 
     try (ResultSet Rs = St.executeQuery(Query)) { 
      while (Rs.next()) { 
       jComboLicorerias.addItem(Rs.getString("nombreLicoreria")); 
      } 
      St.close(); 
     } 
    } catch (SQLException sqle) { 
     JOptionPane.showMessageDialog(null, "Error en la consulta."); 
Смежные вопросы