Récupérer une ligne Jtable dans un Formulaire

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

23 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
22 févr. 2012 à 11:23
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()
1
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
2 août 2011 à 08:55
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.
0
Utilisateur anonyme
2 août 2011 à 10:21
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)
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
13 août 2011 à 09:18
Bonjour, a chaque fois que je veux mettre mon code java je reçois un message d'erreur, comment faire.
0

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

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 août 2011 à 11:38
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
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
14 août 2011 à 07:32
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);
}

});

{
0
Utilisateur anonyme
14 août 2011 à 13:15
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)
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
15 août 2011 à 08:07
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);

      
}
}
0
Utilisateur anonyme
15 août 2011 à 12:04
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)
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
16 août 2011 à 10:15
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]
0
Utilisateur anonyme
16 août 2011 à 12:02
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)
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
21 févr. 2012 à 15:54
Bonjour,

J'ai ajouté par exemple setData(data.elementAt(0)); mais j'ai toujours une erreur sur setData je ne comprend pas pourquoi.
0
Utilisateur anonyme
22 févr. 2012 à 10:07
Bonjour

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

















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
22 févr. 2012 à 10:58
Nom.setData(data.elementAt(0)); ou Nom.setText(data.elementAt(0)); me souligne en rouge setData ou setText.
0
Utilisateur anonyme
22 févr. 2012 à 11:25
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)
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
22 févr. 2012 à 11:40
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)
0
Utilisateur anonyme
22 févr. 2012 à 11:46
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
22 févr. 2012 à 11:51
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());
0
Utilisateur anonyme
22 févr. 2012 à 11:54
data.elementAt(0) ne contient pas un objet, il contient null.




















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Recay2 Messages postés 26 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 29 juin 2012
22 févr. 2012 à 12:08
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'.
0
Rejoignez-nous