Как автоматически обновить данные jComboBox после обновления?

java mysql jcombobox

2140 просмотра

3 ответа

3 Репутация автора

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

Когда я добавляю новые данные в базу данных, 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();
}

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

благодарю вас..

Автор: J. St Источник Размещён: 11.07.2016 03:52

Ответы (3)


2 плюса

4792 Репутация автора

Решение

Вы можете сделать это таким образом, он автоматически обновит 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тоже.

Автор: Inzimam Tariq IT Размещён: 11.07.2016 04:26

1 плюс

295 Репутация автора

Код Inzimam Tariq IT (выше):

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

Автор: Lakshya Goyal Размещён: 11.07.2016 05:24

0 плюса

104 Репутация автора

После того, как вы добавите новый реестр в БД, выполните removeAllItems comboBox.removeAllItems (); и заселите 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."); 
Автор: AjFmO Размещён: 28.07.2016 08:11
Вопросы из категории :
32x32