JComboBox / ArrayList - valeurs distinctes
Bonjour,
J'avance petit à petit dans mon premier micro-développement; une solution trouvée laisse apparaitre de nouveaux problèmes. Celui d'aujourd'hui est l'alimentation d'une combobox avec les valeurs d'une table MySQL.
Jusque là, pas de souci particulier. Le problème se pose lorsque les valeurs dans ma combobox se présente sous cette forme [valeur1, valeur2,...] en une seule et unique ligne. Alors que j'attendais une valeur par ligne.
Voici mon moteur de connexion :
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 57 58 59 60 61 62 63 64 65 66 67 68 69
| import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.sql.*;
import java.text.NumberFormat;
import java.text.ParsePosition;
import java.util.ArrayList;
public class MoteurConnect {
public ArrayList MaConnec(){
// Information d'accès à la base de données
String url = "jdbc:mysql://localhost/test";
String login = "root";
String passwd = "root";
int compteur=0;
String test="";
ArrayList<String> list = new ArrayList<String>();
Connection cn =null;
Statement st =null;
ResultSet rs=null;
try {
// Etape 1 : Chargement du driver
Class.forName("com.mysql.jdbc.Driver");
// Etape 2 : récupération de la connexion
cn = DriverManager.getConnection(url, login, passwd);
// Etape 3 : Création d'un statement
st = cn.createStatement();
String sql = "select nom from data.valeurs";
// // Etape 4 : exécution requête
rs = st.executeQuery(sql);
// Si récup données alors étapes 5 (parcours Resultset)
while (compteur<5){
compteur++;
while (rs.next()) {
test=(rs.getString("nom"));
list.add(test);
}
}
// ResTest = String.valueOf(test);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO: handle exception
e.printStackTrace();
} finally {
try {
// Etape 6 : libérer ressources de la mémoire.
cn.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
} |
Et ci-dessous ma grille (pour la forme) :
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| import java.awt.BorderLayout;
import javax.lang.model.element.Modifier;
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Grille extends JApplet {
JTextField champNom = new JTextField(30);
JTextField champPrénom = new JTextField(30);
JButton boutonLib1 = new JButton("Nom");
JButton boutonLib2 = new JButton("Prénom");
JButton boutonReset = new JButton("RESET");
JButton boutonInject = new JButton("INJECT");
JComboBox ComboNom = new JComboBox() ;
/**
* @param args
*/
Grille(){
JPanel contenuFenêtre = new JPanel();
BorderLayout disposition = new BorderLayout();
contenuFenêtre.setLayout(disposition);
JPanel panneauChamp = new JPanel();
GridLayout dispositionChamp = new GridLayout(2, 2);
panneauChamp.setLayout(dispositionChamp);
panneauChamp.add(boutonLib2);
panneauChamp.add(champPrénom);
panneauChamp.add(boutonLib1);
panneauChamp.add(champNom);
contenuFenêtre.add("North", panneauChamp);
JPanel panneauOP = new JPanel();
GridLayout dispositionOP = new GridLayout(2, 2);
panneauOP.setLayout(dispositionOP);
panneauOP.add(boutonReset);
panneauOP.add(boutonInject);
panneauOP.add(ComboNom);
// valeur liste déroulante :
MoteurConnect maConnexion = new MoteurConnect();
ComboNom.addItem(maConnexion.MaConnec());
contenuFenêtre.add("South", panneauOP);
//Crée le cadre et lui affecte son contenu
JFrame frame = new JFrame("Grille");
frame.setContentPane(contenuFenêtre);
//Affecte à la fenêtre des dimensions suffisantes pour
//prendre en compte tous les contrôles
frame.pack();
//Affiche la fenêtre
frame.setVisible(true);
//Instancie le récepteur d'événements et l'enregistre
//auprès de chaque bouton
MoteurInject moteurInject = new MoteurInject(this);
MoteurReset moteurReset = new MoteurReset(this);
//
boutonReset.addActionListener(moteurReset);
boutonInject.addActionListener(moteurInject);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Grille t = new Grille();
}
} |
J'espère avoir des éléments de réponses qui me permettront d'avancer.
Merci.