Récupérer une ligne Jtable dans un Formulaire [Résolu]

Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
- - Dernière réponse :  Utilisateur anonyme - 22 févr. 2012 à 20:31
Salut,
J'ai vraiment besoin de votre aide, j'ai crée une liste et je veux quand je clique sur un ligne les données s'affiche sous forme d'un formulaire.
Afficher la suite 

Votre réponse

20/23 réponses

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
3
Merci
Et quel message il t'affiche quand tu passes au dessus de la croix rouge ?

Je dirais que data.elementAt(0) retourne un Object, écris ceci et ca devrait être bon : data.elementAt(0).toString()

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Bonjour,

Tu expliques mal ton problème, pourquoi est ce que tu n'y parviens pas ? Montre nous éventuellement ton code en expliquant ce qui ne va pas.
Commenter la réponse de cs_Julien39
0
Merci
Bonjour

Je rejoins Julien39, la description de ton problème est assez vague. Tu peux utiliser la méthode addListSelectionListener afin de placer un écouteur pour être prévenu quand la sélection change dans ta JList. Dans cet écouteur, tu peux mettre à jour un composant contenant ton formulaire dans un JPanel, tu peux utiliser JTextField et JTextArea pour les champs de texte. Je t'encourage à bien lire les tutoriels de base de Swing sur le site d'Oracle pour mieux connaître les composants disponibles en Java.





















T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Bonjour, a chaque fois que je veux mettre mon code java je reçois un message d'erreur, comment faire.
Commenter la réponse de Recay2
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Ne postes pas ton code sur le site mais écris un morceau de code dans la fenetre de dialogue du forum et encadre ton code avec les balises suivantes :
[code=java]
/code
Commenter la réponse de cs_Julien39
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Merci Julien, voila mes 2 classes,je vais bien m'expliqué, dans ma classe Liste y'a la base donné que j'ai eu a partir de mysql phpmy admin, ce que je veux quand je clique sur une ligne la classe infosPersonne s'affiche avec tous les données qui sont sur la liste. Merci encore

[code=java]


public class Liste extends JFrame
{
Vector columnNames = new Vector();
Vector data = new Vector();
static ResultSet rs;
static Connection conn;
static Statement stat;
private JTable table;
private TableRowSorter<TableModel> sorter;
private JFrame frame;
private JTextField filtertxt;
private JLabel l1;
public Liste() {

try
{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("com.mysql.jdbc.Driver found");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/active","root","");
System.out.println("Connexion Ok");


// Read data from a table
String sql = "SELECT * FROM ajoututilisateur";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();

// Get column names
for (int i = 1; i <= columns; i++)
{
columnNames.addElement( md.getColumnName(i) );
}

// Get row data
while (rs.next())
{
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++)
{
row.addElement(rs.getObject(i));
}
data.addElement(row);
}
rs.close();
stmt.close();
}


catch(Exception cnfe)
{
System.out.println("Error:"+cnfe.getMessage());
}

TableModel model = new DefaultTableModel ( data,columnNames) ;
table = new JTable ( model ) ;
sorter = new TableRowSorter<TableModel> ( model ) ;
JScrollPane scrollPane = new JScrollPane((table));
table.setRowSorter ( sorter ) ;
getContentPane().add(scrollPane, BorderLayout.CENTER );
JPanel form = new JPanel () ;
l1=new JLabel("Recherche :");
form.add (l1) ;
filtertxt = new JTextField ( 25 ) ;
filtertxt.getDocument().addDocumentListener(new DocumentListener()
{
public void changedUpdate(DocumentEvent e) {
newFilter();
}
public void insertUpdate(DocumentEvent e) {
newFilter();
}
public void removeUpdate(DocumentEvent e) {
newFilter();
}
});
form.add (filtertxt) ;
getContentPane () .add (form,BorderLayout.SOUTH ) ;

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.getSelectionModel().addListSelectionListener(new ListeListener());

}

private void newFilter() {

String expr = filtertxt.getText () ;
try {

sorter.setRowFilter (RowFilter.regexFilter(expr)) ;
sorter.setSortKeys (null) ;
} catch (java.util.regex.PatternSyntaxException e) {
return;
}

}


public class ListeListener implements ListSelectionListener
{
public void valueChanged( ListSelectionEvent e )
{
if( !e.getValueIsAdjusting() )
{
table.getSelectedRow();
InfosPersonne a = new InfosPersonne ();
a.setVisible(true);
a.setSize(495,570);

}
}
}



et la classe InfosPersonne

public class InfosPersonne extends JFrame
{
setBackground(Color.lightGray);
setLayout(null);

//-----lbl1----
lbl1.setText("Nom :");
add(lbl1);
lbl1.setBounds(new Rectangle(new Point(20, 175), lbl1.getPreferredSize()));

//-----lbl2----
lbl2.setText("Prénom :");
add(lbl2);
lbl2.setBounds(new Rectangle(new Point(20, 210), lbl2.getPreferredSize()));

//----lbl3---
lbl3.setText("Telephone :");
add(lbl3);
lbl3.setBounds(new Rectangle(new Point(20, 240), lbl3.getPreferredSize()));

//----lbl4---
lbl4.setText("Email :");
add(lbl4);
lbl4.setBounds(new Rectangle(new Point(20, 275), lbl4.getPreferredSize()));

//----lbl5---

lbl5.setText("Département :");
add(lbl5);
lbl5.setBounds(20, 300, 100, 100);



//------lbl6----
lbl6.setText("Fonction :");
add(lbl6);
lbl6.setBounds(20, 265, 100, 100);


//-----JTextField---

add(Nom);
Nom.setBounds(125, 175, 140, 20);
add(Prenom);
Prenom.setBounds(125, 210, 140, 20);
add(Tel);
Tel.setBounds(125, 240, 140, 20);
add(email);
email.setBounds(125, 275, 140, 20);
add(fonct);
fonct.setBounds(125, 305, 140, 20);
add(depar);
depar.setBounds(125, 340, 140, 20);

//----Photo----
photo.setIcon(new ImageIcon(getClass().getResource("/profilHomme_hg.jpg")));
add(photo);
photo.setBounds(320, 10, 155, 100);

//-----Annuler---
Annuler.setText("OK");
add(Annuler);
Annuler.setBounds(315, 475, 100, 23);
Annuler.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(EXIT_ON_CLOSE);
}

});

{
Commenter la réponse de Recay2
0
Merci
Bonjour

Il manque du code dans ton extrait comme je vois que la classe InfosPersonne commence directement par du code de méthode en dehors de toute méthode

Dans ton ListSelectionListener, tu as bien l'indice de la ligne sélectionnée avec table.getSelectedRow(), sers-toi de cet indice et appelle getValueAt() sur ta JTable pour récupérer les valeurs des champs qui t'intéressent.

Passe au constructeur de la classe InfosPersonne les informations que tu veux qu'elle affiche puis modifie cette classe pour qu'elle les affiche.















T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Salut, voila le code au complet
je fais comment pour appeler l'indice getValue() sur la table JTable c'est ce que j'arrive pas a le faire aidé s'il vous plait.

public class InfosPersonne extends JFrame
{
private JLabel lbl1;
private JLabel lbl2;
private JLabel lbl3;
private JLabel lbl4;
private JLabel lbl5;
private JLabel lbl6;
private JTextField Nom;
private JTextField Prenom;
private JTextField Tel;
private JTextField email;
private JTextField depar;
private JTextField fonct;
private JButton photo;
private JButton Annuler;
private Liste data;

public InfosPersonne()
{

initComponents();

}

private void initComponents() {


  lbl1=new JLabel();
  lbl2=new JLabel();
  lbl3=new JLabel();
  lbl4=new JLabel();
  lbl5=new JLabel();
  lbl6=new JLabel();
  Nom=new JTextField();
  Prenom=new JTextField();
  Tel=new JTextField();
  email=new JTextField();
  depar=new JTextField();
  fonct=new JTextField();
  photo=new JButton();
  Annuler=new JButton("Annuler");
  
  setBackground(Color.lightGray);
setLayout(null);

//-----lbl1----
lbl1.setText("Nom :");
add(lbl1);
lbl1.setBounds(new Rectangle(new Point(20, 175), lbl1.getPreferredSize()));

//-----lbl2----
lbl2.setText("Prénom :");
add(lbl2);
lbl2.setBounds(new Rectangle(new Point(20, 210), lbl2.getPreferredSize()));

//----lbl3---
lbl3.setText("Telephone :");
add(lbl3);
lbl3.setBounds(new Rectangle(new Point(20, 240), lbl3.getPreferredSize()));

//----lbl4---
lbl4.setText("Email :");
add(lbl4);
lbl4.setBounds(new Rectangle(new Point(20, 275), lbl4.getPreferredSize()));

//----lbl5---

lbl5.setText("Département :");
add(lbl5);
lbl5.setBounds(20, 300, 100, 100);



//------lbl6----
lbl6.setText("Fonction :");
add(lbl6);
lbl6.setBounds(20, 265, 100, 100);
  

//-----JTextField---

add(Nom);
Nom.setBounds(125, 175, 140, 20);
add(Prenom);
Prenom.setBounds(125, 210, 140, 20);
add(Tel);
Tel.setBounds(125, 240, 140, 20);
add(email);
email.setBounds(125, 275, 140, 20);
add(fonct);
fonct.setBounds(125, 305, 140, 20);
add(depar);
depar.setBounds(125, 340, 140, 20);

//----Photo----
photo.setIcon(new ImageIcon(getClass().getResource("/profilHomme_hg.jpg")));
add(photo);
photo.setBounds(320, 10, 155, 100);

//-----Annuler---
Annuler.setText("OK");
add(Annuler);
Annuler.setBounds(315, 475, 100, 23);
Annuler.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) 
      {
    	  System.exit(EXIT_ON_CLOSE);
  } 
        
      });

{
Dimension preferredSize = new Dimension();
for(int i = 0; i < getComponentCount(); i++) {
Rectangle bounds = getComponent(i).getBounds();
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
}
Insets insets = getInsets();
preferredSize.width += insets.right;
preferredSize.height += insets.bottom;
setMinimumSize(preferredSize);
setPreferredSize(preferredSize);
}

}

public static void main(String[] args) {

InfosPersonne ip = new InfosPersonne();
ip.setTitle("InfosPersonne");
   ip.setVisible(true);
   ip.setSize(495,570);
   ip.setResizable(false);

      
}
}
Commenter la réponse de Recay2
0
Merci
Bonjour

Tu devrais regarder dans la documentation, c'est bien expliqué ici :
http://download.oracle.com/javase/6/docs/api/javax/swing/JTable.html#getValueAt%28int,%20int%29

Tu dois faire un truc du genre table.getValueAt(table.getSelectedRow(),indice_de_la_colonne) en bouclant sur chaque colonne.











T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Bonjour, je récupère les valeurs de la ligne que je selectionne, le problème c'est que j'arrive pas a afficher ces valeurs sur les jtextfield qui se trouve dans la classe InfosPersonne
[code=java]
public class ListeListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
if(!e.getValueIsAdjusting())
{
table.getSelectedRow();
int num=table.getSelectedRow() ;
String nom1 = table.getValueAt(num, 0).toString();
InfosPersonne a = new InfosPersonne ();
a.setVisible(true);
a.setSize(495,570);

}
}
}
[code]
Commenter la réponse de Recay2
0
Merci
Tu peux passer les valeurs que tu obtiens dans ton Listener au constructeur de la classe InfosPersonne. Ainsi, dans initComponents(), tu peux alors appeler la méthode setText() sur le JTextField concerné en lui passant la valeur que tu as récupéré (par le biais du constructeur).













T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Bonjour,

J'ai ajouté par exemple setData(data.elementAt(0)); mais j'ai toujours une erreur sur setData je ne comprend pas pourquoi.
Commenter la réponse de Recay2
0
Merci
Bonjour

Sois plus précis. Quelle erreur as-tu exactement?

















T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Nom.setData(data.elementAt(0)); ou Nom.setText(data.elementAt(0)); me souligne en rouge setData ou setText.
Commenter la réponse de Recay2
0
Merci
Il faut que le type du paramètre que tu passes à la méthode setText(String) soit correct. Dans ton cas, data.elementAt(0) doit être une chaîne de caractère ou bien essaie de construire une chaîne à part du contenu de data.elementAt(0).



















T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Merci Julien39 j'ai plus l'erreur, mais à chaque que je clique sur la liste j'ai ce message d'erreur :

com.mysql.jdbc.Driver found
Connexion Ok
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at client.InfosPersonne.(InfosPersonne.java:50)
at client.Liste$ListeListener.valueChanged(Liste.java:288)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Commenter la réponse de Recay2
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
J'ai pas compris gouessej voila mon code :

public InfosPersonne(Vector data)
{

    	  ID.setText(data.elementAt(0).toString());
 Nom.setText(data.elementAt(1).toString());
 Prenom.setText(data.elementAt(2).toString());
 Tel.setText(data.elementAt(3).toString());
 Portable.setText(data.elementAt(4).toString());
 email.setText(data.elementAt(5).toString());
 depar.setText(data.elementAt(6).toString());
 fonct.setText(data.elementAt(7).toString());
Commenter la réponse de Recay2
0
Merci
data.elementAt(0) ne contient pas un objet, il contient null.




















T.U.E.R (First Person Shooter créé par Julien Gouesse)
Commenter la réponse de Utilisateur anonyme
Messages postés
27
Date d'inscription
vendredi 7 janvier 2011
Dernière intervention
29 juin 2012
0
Merci
Mais quand j'enleve tostring settext est souligné en rouge et quand je passe la souris dessus j'ai ce message cast argument'data.elementAt(o)' to 'String'.
Commenter la réponse de Recay2

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.