greglover
Messages postés58Date d'inscriptionmardi 16 janvier 2007StatutMembreDernière intervention10 mars 2008
-
16 janv. 2007 à 17:58
greglover
Messages postés58Date d'inscriptionmardi 16 janvier 2007StatutMembreDernière intervention10 mars 2008
-
19 janv. 2007 à 12:26
Bonsoir,
je peine moi aussi avec les JTable à afficher des données.
Je souhaite les extraire d'une base de donnée d'élèves avec 5 champs.
Je n'arrive pas à adapter le code, que j'ai trouvé sur ce forum, pour extraire les infos non plus à partir d'un fichier mais d'une bdd
J'ai essayé plein de trucs (enfin quand je dis plein...) mais je suis débutant en java et je n'ai jamais utilisé les Jtable.
Je me suis pourtant servi de plein de tuto mais j'en ai trouvé aucun qui extrait les infos d'une bdd.
Cela fait plusieurs jours que je suis bloqué sur ce point. J'aimerais que vous m'aidiez svp, un exemple de code serait le mieux.
J'espère que quelqu'un prendra le temps de répondre car il ne me reste
plus longtemps pour finir ce programme (je suis en stage et n'ai pas de
maitre de stage car dans une école maternelle et primaire))
Merci d'avance
ps : je sais me connecter à la bdd, j'ai déjà fait ajouter élève/modifier/supprimer/afficher et là je dois faire afficher classe
A voir également:
Récupérer et afficher les données d'une bdd mysql en java
greglover
Messages postés58Date d'inscriptionmardi 16 janvier 2007StatutMembreDernière intervention10 mars 2008 17 janv. 2007 à 18:01
merci beaucoup pour toute cette aide, entre temps j'ai moi aussi réussi à adapté un code pour en sortir ce que je veux (c'était vraiment pas dur lol) mais là je dois laisser Internet.
Je posterai mon code demain et regarderai toutes vos aides mais je vous remercie déjà infiniment.
greglover
Messages postés58Date d'inscriptionmardi 16 janvier 2007StatutMembreDernière intervention10 mars 2008 18 janv. 2007 à 13:16
Re
alors voici mon code avant de regarder toute votre aide. Je vais maintenant regarder tout cela pour voir si je trouve ce que je cherche à savoir :
modifier la taille de certaine colonne
rendre les celulles non éditable
colorier le fond d'une ligne sur deux en gris (pour avoir une meilleur lisibilité)
Merci d'avance si quelqu'un sait comment le faire
ps : d'après ce que j'ai compris des tableaux, on doit utiliser une sorte de modèle. Moi j'ai cherché justement à ne pas avoir besoin d'un "model" => c'est déjà bien assez compliqué comme sa
<hr size="2" width="100%" />
public void afficher_classe_standard(String classe)
{
try {
setSize(800, 531);
lbl_effectif = new JLabel();
lbl_effectif.setBounds(new Rectangle(106, 8, 71, 19));
lbl_effectif.setText("Effectif : ");
Vector columnNames = new Vector();
Vector data = new Vector();
try
{
{
this.setSize(700, 431);
}
// Se connecter à la base de donnée
Class.forName("com.mysql.jdbc.Driver");
Connection connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/montalembert","root","" );
// Récupérer les données des élèves
Statement stmt = (Statement) connection.createStatement(); String sql "SELECT nom_enfant,prenom_enfant,date_de_naissance_enfant,adresse1_enfant,cp_ville1_enfant,responsable_legal1_enfant FROM enfant WHERE `classe_enfant` '"+classe+"' ORDER BY nom_enfant,prenom_enfant";
ResultSet rs = (ResultSet) stmt.executeQuery( sql );
// Récupérer le titre des colonnes
ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData();
// Récupérer le nombre de colonne
int columns = md.getColumnCount();
// Récupérer le nom des colonnes
for (int i = 1; i <= columns; i++)
{
// ignorer le champ cp_ville pour éviter la création d'une colonne
if (!(md.getColumnName(i).equalsIgnoreCase("cp_ville1_enfant")))
columnNames.addElement( md.getColumnName(i).replace("_enfant", "").toUpperCase().replace("_", " ").replace("1", "") );
}
// Récupérer les données des colonnes
// Tant qu'il y a quelquechose à lire : while
while (rs.next())
{
nb=rs.getRow();
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++)
{
row.addElement( rs.getString("nom_enfant") );
row.addElement( rs.getString("prenom_enfant") );
row.addElement( rs.getString("date_de_naissance_enfant") );
// Concat. avec le champs cp_ville dans la colonne adresse
row.addElement( rs.getString("adresse1_enfant")+" "+rs.getString("cp_ville1_enfant") );
row.addElement( rs.getString("responsable_legal1_enfant"));
}
data.addElement( row );
}
// Tout fermer
rs.close();
stmt.close();
}
catch(Exception e)
{
System.out.println( e );
}
// Créer la table avec les données de la base
JTable table = new JTable(data, columnNames);
// Créer le scrollpane permettant de voir les champs qui sortent de la fenêtre
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBorder(null);
// Créer le panel d'entete
JPanel entete = new JPanel();
entete.setLayout(null);
entete.setPreferredSize(new Dimension(800, 30));
entete.setSize(new Dimension(800, 30));
entete.add(lbl_effectif, null);
// Ajouter le scrollpane à panel principal
getPnl_affichage_classe().add(entete, BorderLayout.NORTH );
getPnl_affichage_classe().add(scrollPane, BorderLayout.CENTER);
}
catch (Exception e) {e.printStackTrace();}
DataBaseImpl base = new DataBaseImpl();
base.setParametre("127.0.0.1","root","","montalembert");
try
{
base.open();
// Récupérer le nom de la maitresse
String rq="SELECT maitresse_classe,libelle_classe FROM classe WHERE `libelle_classe` = '"+classe+"'";
ResultSet rqt = base.query(rq);
while(rqt.next())
{
lbl_maitresse.setText(lbl_maitresse.getText()+rqt.getString("maitresse_classe"));
base.close();
}
}
catch(Exception e){System.out.println( e );}
DataBaseImpl base2 = new DataBaseImpl();
base2.setParametre("127.0.0.1","root","","montalembert");
try
{
base.open();
// Compter nombre d'élève dans la classe
String nb="SELECT COUNT(*) AS nbr FROM enfant WHERE classe_enfant = '"+classe+"'";
ResultSet nbr = base.query(nb);
greglover
Messages postés58Date d'inscriptionmardi 16 janvier 2007StatutMembreDernière intervention10 mars 2008 18 janv. 2007 à 18:34
Bonsoir,
j'ai parcouru vos réponses, tout d'abord merci
@lafolle24320 : Merci pour ton bout de code mais après vérification je n'aurai pas besoin de sort table, puisque je veux juste trier par nom et je le fais directement dans ma requête. Par contre je suis dégouté d'avoir galéré si longtemps là dessus car le lien que tu me donne lors de ta deuxième intervention m'aurait convenu tout a fait. En même temps j'aurai appris un peu.
@Dellys : comme tu peux le voir, nous avons trouvé le même lien. Je me suis servi de ce bout de code trouvé sur sun pour faire ma classe. Il était parfait.
Maintenant je cherche à faire ceci :
modifier la taille de certaine colonne
rendre les celulles non éditable // facultatif
colorier le fond d'une ligne sur deux en gris (pour avoir une meilleur lisibilité)
En ce qui concerne les cellules non éditable, a chaque fois cela implique d'avoir un Tablmodel ce qui m'embête car je ne comprends pas exactement ce que c'est, mais je ne demande que ça d'apprendre.
Puisque c'est un autre problème je vais créer un autre topic par soucis de clarté. Je donne la réponse acceptée à lafolle24320 parce qu'elle m'a beaucoup aidé même si c'est aussi le cas de Dellys qui a trouvé exactement la même chose que moi. J'espère que ce n'est pas grave.