Selectionne une ligne depui une table en java

benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 - 28 mars 2010 à 12:25
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 - 8 avril 2010 à 16:42
bonjour,
je veut sélectionné une ligne depuis une table puis l'affiché le contenu de cette ligne dans des jtextfield avec java

qq peut m'aide

merci

abdessamed

26 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 mars 2010 à 19:58
Salut,

Quand tu dis table, tu veux dire jtable ou table dans une base de données ?

Qu'est-ce que tu n'arrives pas à faire ? Récupérer l'index de la ligne sélectionnée ? Récupérer les informations de cette ligne ? Afficher des informations dans des JTextField ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
29 mars 2010 à 10:15
bonjour
bon, mon code affiche les nom des médecins dans un tableau jtable depuis une bdd(gestion médicale)
et le code est:

jPanel6.setVisible(true);

panel2.setLayout(new BorderLayout());

DefaultTableModel jTable1 = new DefaultTableModel();

String query="SELECT * FROM medecin ";
try {

Statement state = Connect.getInstance()
.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY
);


ResultSet res = state.executeQuery(query);
ResultSetMetaData meta = res.getMetaData();
Object[] column = new Object[meta.getColumnCount()];

for(int i = 1 ; i <= meta.getColumnCount(); i++){
column[i-1] = meta.getColumnName(i);
}
res.last();
int rowCount = res.getRow();
Object[][] data = new Object[res.getRow()][meta.getColumnCount()];

res.beforeFirst();
int j = 1;

while(res.next()){//la lecteur est colonne par colonne
for(int i = 1 ; i <= meta.getColumnCount(); i++){
data[j-1][i-1] = res.getObject(i);
System.out.println(res.getObject(i));
}
j++;
}


res.close();
state.close();


JTable JTable1=new JTable(data, column);
panel2.add(new JScrollPane(JTable1));
jPanel6.add(panel2, BorderLayout.CENTER);

jPanel6.revalidate();


} catch (SQLException e) {

JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR ! ", JOptionPane.ERROR_MESSAGE);
}



// TODO add your handling code here:
}



private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {
jPanel5.setVisible(true);
jPanel4.setVisible(false);
jPanel6.setVisible(false);
// TODO add your handling code here:
}


private void jTextField23ActionPerformed(java.awt.event.ActionEvent evt) {

String str=jTextField23.getText().toUpperCase();
String query="SELECT * FROM medecin WHERE nom like '"+jTextField23.getText()+"%'or nom like '"+str+"%' ";
// initTable(query);
try {

Statement state = Connect.getInstance()
.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY
);


ResultSet res = state.executeQuery(query);
ResultSetMetaData meta = res.getMetaData();
Object[] column = new Object[meta.getColumnCount()];

for(int i = 1 ; i <= meta.getColumnCount(); i++){
column[i-1] = meta.getColumnName(i);
}
res.last();
int rowCount = res.getRow();
Object[][] data = new Object[res.getRow()][meta.getColumnCount()];

res.beforeFirst();
int j = 1;

while(res.next()){//la lecteur est colonne par colonne
for(int i = 1 ; i <= meta.getColumnCount(); i++){
data[j-1][i-1] = res.getObject(i);
System.out.println(res.getObject(i));
}
j++;
}


res.close();
state.close();

panel2.removeAll();
panel2.add(new JScrollPane(new JTable(data, column)));
jPanel6.add(panel2, BorderLayout.CENTER);

jPanel6.revalidate();


} catch (SQLException e) {

JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR ! ", JOptionPane.ERROR_MESSAGE);
}


donc, je veut après l'affichage de ce tableau, quand je sélectionne une de ce tableau de récupérer 'index de la ligne sélectionnée, les informations de cette ligne et Affichage les informations de cette ligne dans des JTextField

merci pour votre aide

abdessamed
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
29 mars 2010 à 10:32
Salut,

Ton code est illisible : jtable1, jtextfield23, panel15487... comment tu t'y retrouves ???

Renomme au moins tes variables convenablement, c'est un minimum.

Pour récupérer l'index de la ligne sélectionnée dans ta JTable, il te faut rajouter un SelectionListener au model de ton JTable, et ainsi tu peux savoir à chaque fois que la sélection change l'index de la ligne par getSelectedRow.

Ensuite, à partir de ce numéro de ligne, il te faut récupérer les informations de cette ligne (toujours en passant par le model de ton JTable) en utilisant la fonction int) getValueAt.

Et enfin, il te manque plus qu'à valuer tes JTextFields par les valeurs en utilisant la méthode setText.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
29 mars 2010 à 10:48
rebonjour
j'espère ce code soit être lisible

DefaultTableModel jTable1 = new DefaultTableModel();

String query="SELECT * FROM medecin ";
try {
// conection à la bdd
Statement state = Connect.getInstance()
.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY
);


ResultSet res = state.executeQuery(query); // en exécute la raquette
ResultSetMetaData meta = res.getMetaData();//
Object[] column = new Object[meta.getColumnCount()];//

for(int i = 1 ; i <= meta.getColumnCount(); i++){//
column[i-1] = meta.getColumnName(i);
}
res.last();
int rowCount = res.getRow();
Object[][] data = new Object[res.getRow()][meta.getColumnCount()];

res.beforeFirst();
int j = 1;

while(res.next()){//la lecteur est colonne par colonne
for(int i = 1 ; i <= meta.getColumnCount(); i++){
data[j-1][i-1] = res.getObject(i);
System.out.println(res.getObject(i));
}
j++;
}


res.close();
state.close();

// créons la table avec data et column
JTable JTable1=new JTable(data, column);

////////////////////
donc ce code affiche la table médecin;
tu a parler de SelectionListener, getSelectedRow, getValueAt, setText,
ou en doit les mettre ces fonction, tq ce code j'ai fais lorsque en cliquons sur "consultation des médecin"

merci pour votre aide

abdessamed
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
29 mars 2010 à 11:10
Salut,

Je t'ai donné les étapes : le SelectionListener pour savoir quand est-ce que la sélection change (facultatif si l'utilisateur doit cliquer sur un bouton pour afficher les info, le sélection listener, c'est pour afficher les informations à chaque changement de sélection.

Le getSelectedRow pour savoir quelle ligne est sélectionnée.
Ensuite, le getValueAt pour récupérer les données de la ligne sélectionnée.
Et enfin, le setText pour définir les valeurs des jtextfield avec les valeurs récupérée.

Je vois pas où est la difficulté...
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
29 mars 2010 à 11:29
salut
pour mois je ne vois pas OÙ je mettre ces fonction

abdessamed
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
29 mars 2010 à 11:35
Salut,

Ben tout dépend quand est-ce que tu veux charger les données dans tes jtextfield : si c'est quand l'utilisateur change sa sélection, alors il faut passer par le SelectionListener, et tout le code va dedans.

Si c'est en cliquant sur un bouton, alors c'est dans le actionListener du bouton.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
29 mars 2010 à 16:48
salut
je veut que lorsque l'utilisateur change sa sélection
te peut m'indiquer sur un petit exemple concernant SelectionListener

abdessamed
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
29 mars 2010 à 16:57
Salut,

Voir le lien dans mon message un peu plus haut...
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
1 avril 2010 à 12:26
salut

j'ai vu les mais pas encore trouver la solution de mon pb,
bon j'ai copié le code de la sélection mais rien donné,
s.v.p aide mois, je suis débutant en java

abdessamed
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
1 avril 2010 à 12:44
Salut,

Est-ce que tu as réussi à faire jusqu'à maintenant ?

Est-ce que tu as réussi à ajouter un SelectionListener à ton model de JTable ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
1 avril 2010 à 14:27
salut;

non pas encore j'ai copie ce code mais ne donne rien, pourquoi;

public class SelectionListener implements ListSelectionListener { JTable table; // It is necessary to keep the table since it is not possible // to determine the table from the event's source SelectionListener(JTable table) { this.table table; } public void valueChanged(ListSelectionEvent e) { // If cell selection is enabled, both row and column change events are fired if (e.getSource() table.getSelectionModel() && table.getRowSelectionAllowed()) { // Column selection changed int first = e.getFirstIndex(); int last = e.getLastIndex(); } else if (e.getSource() == table.getColumnModel().getSelectionModel() && table.getColumnSelectionAllowed() ){ // Row selection changed int first = e.getFirstIndex(); int last = e.getLastIndex(); } if (e.getValueIsAdjusting()) { // The mouse button has not yet been released } } }


abdessamed
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
1 avril 2010 à 14:31
j'ai copié ce code dans

public class formacceuil extends javax.swing.JFrame {
....


public class SelectionListener implements ListSelectionListener {
..
}


...
}
abdessamed
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
1 avril 2010 à 15:15
Salut,

Ok, bon déjà modifie un peu le code tel que ci-dessous :
public class SelectionListener implements ListSelectionListener {
    JTable table;

    // It is necessary to keep the table since it is not possible
    // to determine the table from the event's source
    SelectionListener(JTable table) {
        this.table = table;
    }
    public void valueChanged(ListSelectionEvent e) {
        // If cell selection is enabled, both row and column change events are fired
        if (e.getSource() == table.getSelectionModel()
              && table.getRowSelectionAllowed()) {
            // Column selection changed : rien à faire dans ton cas
        } else if (e.getSource() == table.getColumnModel().getSelectionModel()
               && table.getColumnSelectionAllowed() ){
            // Row selection changed : appel de la méthode
            selectionChanged();
        }
    }
}


Ensuite, dans ta classe contenant le JTable, il te faut rajouter le listener sur le jtable :
SelectionListener listener = new SelectionListener(tonJTable);
table.getSelectionModel().addListSelectionListener(listener);
table.getColumnModel().getSelectionModel().addListSelectionListener(listener);


Enfin, tu dois créer une fonction nommée "selectionChanged" dans ta classe qui contient ton jtable :
private void selectionChanged() {
// ... code à exécuter lors de la modification de la sélection du jtable.
}

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
4 avril 2010 à 10:21
bonjour;

merci pour votre aide,
bon, j'ai copié
public class SelectionListener implements ListSelectionListener {

}

et j' ai copié l'autre code dans la classe qui contient mon jtable j'ai des erreurs:
- dans la class SelectionListener j' ai Ligne rouge sur " selectionChanged(); "

- une Ligne rouge sur table.getColumnModel().getSelectionModel().addListSelectionListener(listener);

- et une Ligne rouge sur private void selectionChanged() { }






abdessamed
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
4 avril 2010 à 11:39
non pour la 2eme erreur, j'ai pas copier .addListSelectionListener(listener);

tq j'ai modifier table par le nom de mon table

et pour la premier et la 3eme : j'ai fait la fonction
private void selectionChanged() { }

après

public class SelectionListener implements ListSelectionListener {

}

j'ai pas obtenu des erreurs, mais lorsque j'ai fait un petit test rien donnée, par exemple : j ai fait le code suivant dans la fonction :
private void selectionChanged() {

jTextField23.setText("aaaaaa");

}

et comment je peut lire par exemple le premier colonne de la ligne sélectionné et mettre cette valeur à un jTextField23

merci pour votre aide

abdessamed
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
5 avril 2010 à 17:13
bonsoir

svp aide mois


abdessamed
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 avril 2010 à 17:19
Salut,

Est-ce que ton JTable est rempli lorsque tu arrive sur ta feuille ? Est-ce que tu as plusieurs lignes ?

Si tu sélectionnes une ligne, est-ce que le contenu de ton jTextField23 (hum, toujours aussi illisible tes variables !!!) est modifié ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
6 avril 2010 à 16:05
salut,

mon Table est rempli lorsque j'arrive sur ma feuille et contient plusieurs ligne mais lorsque je sélectionne une ligne e contenu de mon jTextField23 non change pas

merci


abdessamed
0
benabdessamed Messages postés 52 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 septembre 2012 3
8 avril 2010 à 11:38
bonsoir

svp aide mois


abdessamed
0
Rejoignez-nous