Comment actualiser le JComboBox de données?

J'ai du mal à actualiser les données à l'intérieur de la JComboBox.

Il y a un bouton "Create" qui a ActionListener, qui ajoute l'élément à JComboBox.

Mais les modifications ne sont pas répercutées dans l'interface graphique: je n'ai toujours pas voir le nouvel article supplémentaire.

repaint() ne l'aide pas.

Mise à jour: Voici une (presque) complète le code de la GUI:

public class Main extends JFrame implements ActionListener
{
static Connection conn;
static PreparedStatement ps = null;
static ResultSet res;
static Statement sta;
private final static int ITERATION_NUMBER = 1000;
public void GUI () throws SQLException {
setBounds(0, 0, 320, 240);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
close(ps);
close(res);
close(conn);
System.exit(0);
}
});
setMinimumSize(new Dimension(320, 240));
setResizable(false);
this.setTitle("Accounts");
JPanel panel = new JPanel();
GridLayout2 GL = new GridLayout2(4,3);
GL.setHgap(10);
panel.setLayout(GL);
Font font = new Font("Serif", Font.BOLD, 20);
Font font2 = new Font("Courier New", Font.BOLD, 16);
JLabel label1 = new JLabel("Username");
JLabel label2 = new JLabel("Password");
JLabel label3 = new JLabel("Controls");
label1.setFont(font2);
label2.setFont(font2);
label3.setFont(font2);
final JTextField username = new JTextField();
final JTextField password1 = new JPasswordField();
final JTextField password2 = new JPasswordField();
final JComboBox userBox1 = new JComboBox();
final JComboBox userBox2 = new JComboBox();
JButton create = new JButton("CREATE");
create.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
try {
createUser(conn, username.getText(), password1.getText());
userBox1.addItem(username.getText());
userBox2.addItem(username.getText());
} catch (NoSuchAlgorithmException
| UnsupportedEncodingException | SQLException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
userBox1.removeAllItems();
userBox2.removeAllItems();
res = (ResultSet) sta.executeQuery("SELECT LOGIN FROM ACCOUNTS");
String temp;
for (int i=0; res.next(); i++) {
temp = (String)res.getString("LOGIN");
userBox1.addItem(temp);
userBox2.addItem(temp);
}
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(username);
panel.add(password1);
panel.add(create);
panel.add(userBox1);
panel.add(password2);
panel.add(modify);
panel.add(userBox2);
panel.add(new JLabel(""));
panel.add(delete);
add(panel);
setVisible(true);
}

SOLUTION: Ajoutant password1.setText(""); juste après "createUser" résolu le problème! C'est étrange, peut-être que c'est en quelque sorte actualisé le GUI...

Pourriez-vous fournir un peu de code?
avez-vous refesh la panel ou une image à laquelle le JComboBox est un conteneur.
repeindre n'est presque jamais nécessaire. Les composants de savoir quand ils ont à repeindre eux-mêmes.
Ajouter le code de déclarer, lors de l'initialisation, et l'ajout de la liste déroulante pour le cadre. Ma conjecture est que vous ajoutez un élément à un autre combo que celui affiché.
Si c'est votre code, puis il a deux problèmes: 1. il utilise des composants de l'event dispatch thread. 2. Depuis le bloc utilisateur local à l'interface graphique de la méthode, je ne sais pas comment l'auditeur peut avoir une référence. Donc, je suis toujours deviner que vous êtes à la modification d'un autre combo que celui affiché. Post code réel, ou encore mieux: un SSCCE.

OriginalL'auteur Jake Badlands | 2012-06-05