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

Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 2 août 2011 à 08:10 - 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 

23 réponses

Répondre au sujet
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 22 févr. 2012 à 11:23
+3
Utile
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()
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 2 août 2011 à 08:55
0
Utile
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
Utilisateur anonyme - 2 août 2011 à 10:21
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 13 août 2011 à 09:18
0
Utile
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
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 13 août 2011 à 11:38
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 14 août 2011 à 07:32
0
Utile
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
Utilisateur anonyme - 14 août 2011 à 13:15
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 15 août 2011 à 08:07
0
Utile
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
Utilisateur anonyme - 15 août 2011 à 12:04
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 16 août 2011 à 10:15
0
Utile
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
Utilisateur anonyme - 16 août 2011 à 12:02
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 21 févr. 2012 à 15:54
0
Utile
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
Utilisateur anonyme - 22 févr. 2012 à 10:07
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 22 févr. 2012 à 10:58
0
Utile
Nom.setData(data.elementAt(0)); ou Nom.setText(data.elementAt(0)); me souligne en rouge setData ou setText.
Commenter la réponse de Recay2
Utilisateur anonyme - 22 févr. 2012 à 11:25
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 22 févr. 2012 à 11:40
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 22 févr. 2012 à 11:51
0
Utile
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
Utilisateur anonyme - 22 févr. 2012 à 11:54
0
Utile
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
Recay2 27 Messages postés vendredi 7 janvier 2011Date d'inscription 29 juin 2012 Dernière intervention - 22 févr. 2012 à 12:08
0
Utile
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.

Récupérer une ligne Jtable dans un Formulaire - page 2