Code d'ajout de composants qui ne marche pas s'il est lancé depuis une procèdure
Bonjour,
je suis confronté au problème suivant :
je crée une interface graphique dynamiquement en me basant sur une requete sql.
Cette partie marche.
Je prends le même code et je le met dans une procédure et là ça ne fonctionne plus comme si il ne pouvait pas ajouter de bouton dans le panel.
Ci dessous le code qui marche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
public Map<String, JButton> btnMap;
public auto(){
setTitle("test");
final JPanel panneau1 = new JPanel();
getContentPane().add(panneau1);
panneau1.setLayout(new GridLayout(0,5));
int i =0;
btnMap = new HashMap<>();
//partie qui me génere les boutons
try {
//je récupère les variables de conexion de la classe VariableGlobale
VariablesGlobales vcon = new VariablesGlobales();
Class.forName(vcon.driverName);
//Connection con = DriverManager.getConnection(vcon.url, vcon.userName, vcon.password);
con = DriverManager.getConnection(vcon.url, vcon.userName, vcon.password);
PreparedStatement ps = con.prepareStatement("select * from toto");
ResultSet rs = ps.executeQuery();
//jcombo.removeAllItems();
while (rs.next()) {
svaleur = rs.getString("NOM");
btn =new JButton();
panneau1.add(btn);
btn.setText(svaleur);
btn.setName("btne" + i);
btnMap.put("btne" +i, btn);
btn.addActionListener(this);
i=i+1;
}
con.close();
} catch (Exception e) {
try {
con.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
setVisible(true);
} |
si je prends bêtement la partie qui ajoute les boutons et que je la mets ainsi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
public void test(){
try {
//je récupère les variables de conexion de la classe VariableGlobale
VariablesGlobales vcon = new VariablesGlobales();
int i =0;
Class.forName(vcon.driverName);
//Connection con = DriverManager.getConnection(vcon.url, vcon.userName, vcon.password);
con = DriverManager.getConnection(vcon.url, vcon.userName, vcon.password);
PreparedStatement ps = con.prepareStatement("select distinct NOM from totot ");
ResultSet rs = ps.executeQuery();
//jcombo.removeAllItems();
while (rs.next()) {
svaleur = rs.getString("NOM");
btn =new JButton();
panneau1.add(btn);
btn.setText(svaleur);
btn.setName("btne" + i);
btnMap.put("btne" +i, btn);
btn.addActionListener(this);
i=i+1;
}
con.close();
} catch (Exception e) {
try {
con.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
} |
j'obtiens l'erreur :
Got an exception!
null
au moment de rajouter le bouton dans le panneau1
Comme je dois faire une dizaine de fois la même manipulation j'aimerais vraiment arriver à intégrer le code dans une procédure.
Et puis j'avoue que je comprends pas pourquoi ça ne veut pas marcher et ça m'agace....
Si quelqu'un voit ou j'ai fais la bêtise :)
Merci