Creation de boutons selon requete

Résolu
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 - 26 avril 2007 à 11:52
aroussisanaa Messages postés 3 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 4 août 2009 - 4 août 2009 à 21:42
bonjour,

je voudrais créer temporairement des bouttons selon le nombre de lignes renvoyées par ma requête SQL
je m'explique,
mon application doit gérer des hôtels et je veux pouvoir charger un hotel inscrit dans la BDD, je veux donc que pour chaque ligne contenue dans mon resultset,  il s'affiche un boutton temporaire sur lequel on peut cliquer pour afficher les données correspondantes (donc un boutton par hotel).
Mon seul problème est la création de ces bouttons dynamiquement sur mon interface.

j'espère avoir été à peu pret clair

merci d'avance!

kro

9 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
26 avril 2007 à 15:07
Salut:

Je ne vois pas de problème pour réussir à le faire.

Il faut juste faire une méthode de ce type:

//
// Ceci est pour créer des boutons
// Le paramètre (rs) ici est la résultat de l'exécution de la requête.
//
public JPanel addButtons (ResultSet rs) {
    JPanel panel = new JPanel ();
    panel.setLayout (new GridLayout (rs.getRow (), 1));
   
    while (rs.next ()) {
       //
       // EXPLOITER LES RESULTATS RETOURNEES PAR LA REQUETE
       //
       JButton btn = new JButton ("Bouton");
       btn.addActionListener (new ActionListener () {
          public void actionPerformed (ActionEvent ae) {
             //
             // ACTIONS A FAIRE
             //
          }
       });
       panel.add (btn);
    }
    return panel;
}
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 avril 2007 à 00:30
Salut:

Comme on peut s'y attendre on peut avoit un grand nombre de boutons donc il faut ajouter un JScrollPane pour pouvoir visualer et naviguer entre les différents boutons.

Petite modification:


//
// Ceci est pour créer des boutons
// Le paramètre (rs) ici est la résultat de l'exécution de la requête.
//
public JScrollPane addButtons (ResultSet rs) {
    JPanel panel = new JPanel ();
    panel.setLayout (new GridLayout (rs.getRow (), 1));
   
    while (rs.next ()) {
       //
       // EXPLOITER LES RESULTATS RETOURNEES PAR LA REQUETE
       //
       JButton btn = new JButton ("Bouton");
       btn.addActionListener (new ActionListener () {
          public void actionPerformed (ActionEvent ae) {
             //
             // ACTIONS A FAIRE
             //
          }
       });
       panel.add (btn);
    }
   
   return new JScrollPane (panel);
}
3
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
26 avril 2007 à 23:56
merci bien l'ami
0
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
27 avril 2007 à 14:30
ah ouais pas bete du tout,
merci encore :)
0

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

Posez votre question
aroussisanaa Messages postés 3 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 4 août 2009
3 août 2009 à 21:55
slt, bon j'ai un probleme semblable à celui ci mais le nombre des boutons à ajouter est dynamique. en effet moi j'ai un bouton "creerAgent"; en cliquant sur ce bouton une autre forme se crée qui représente l'agent(moi j'ai choisit bouton). j'ai vu que je doit redessiner mon panel mais je ne sais pas comment!!! quelqu'un peut m'aider?
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 août 2009 à 23:28
Salut:

Il faut invoquer la méthode JPanel.validate().

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class Test {

public static void main(String[] args) {
final JPanel panel = new JPanel(new FlowLayout());

JButton button = new JButton("New Button");
button.addActionListener(new ActionListener() {

private int count = 1;

public void actionPerformed(ActionEvent e) {
JButton btn = new JButton("Button " + (count++));
panel.add(btn);
panel.validate();
}
});

panel.add(button);

JFrame frame = new JFrame();
frame.setTitle("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.getContentPane().add(panel, BorderLayout.NORTH);
frame.setVisible(true);
}
}
0
aroussisanaa Messages postés 3 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 4 août 2009
4 août 2009 à 13:25
bjr: merci de m'avoir répondre. mon problème est résolu avec votre solution. Mais est ce que vous pouvez m'expliquer ce que fait cette fonction exactement (elle appelle repaint() ou quoi).Merci
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
4 août 2009 à 21:03
Salut:

public void validate()

Validates this container and all of its subcomponents.

The validate method is used to cause a container to lay out its subcomponents again. It should be invoked when this container's subcomponents are modified (added to or removed from the container, or layout-related information changed) after the container has been displayed.
0
aroussisanaa Messages postés 3 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 4 août 2009
4 août 2009 à 21:42
RE : merci
0
Rejoignez-nous