IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NetBeans Java Discussion :

[Form Builder] problème de JPanel et JTable


Sujet :

NetBeans Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut [Form Builder] problème de JPanel et JTable
    Bonjour tout le monde!

    Je suis nouveau sur ce forum et je suis également débutant en programmation Java.
    Je viens solliciter votre aide quant à deux problèmes urgents sur le projet auquel je participe.

    Voilà la situation : je dois développer un annuaire informatique permettant entre autres de répertorier toutes les personnes d'une base de données et permettant d'accéder à leurs coordonnées.
    Cet annuaire se présente de la façon suivante: un menu (sous forme de boutons) sur la gauche et le contenu des menus sur la droite (un peu comme sur les sites web quoi).
    Jusque là tout va bien...

    Le premier problème intervient alors ici : afin d'afficher le contenu du menu correspondant au bouton cliqué (accueil, présentation, mot du président, recherche, etc...), je pensais créer des JPanels et lors du clic sur un bouton, j'active le JPanel correspondant et je désactive les autres... Seulement voilà, depuis NetBeans et en mode création graphique (ajout graphique des composants), lorsque je crée un nouveau JPanel, il me décale le précedent ou bien me l'insère dans le précédent.. Or ce que je veux, c'est autant de JPanel parfaitement supperposés qu'il n'y a de boutons dans le menu de gauche! (j'espère que je me fais bien comprendre).

    Ca, c'était pour mon premier problème. Passons maintenant au suivant:

    Dans le menu "Recherche" (le coeur du logiciel), je dois etre en mesure d'afficher les résultats de la recherche (en fonction des critères des combo box) dans une JTable où chaque ligne correspondrait à une personne diférente.... De plus, chaque ligne contiendrait un bouton "détail"" (dernière colonne de la JTable prévue à cet effet) qui, lors d'un simple clic sur ce dernier, ouvrirait une nouvelle fenetre indépendante qui serait en fait une fiche d'identité de la personne concernée.... Sur le principe, tout va bien.

    En pratique, je souhaite donc associer à chaque bouton "détails", l'objet de type "Personne" correspondant à la ligne de résultat de telle sorte que chaque bouton ouvre la fiche d'identité correpondante à l'enregistrement (vous l'aurez compris).
    Or ça, je ne sais pas faire...je sais créer le bouton avec BoutonRenderer et BoutonEditor (que j'ai pas tellement compris le fonctionnement d'ailleurs mais qui m'a permis d'afficher les boutons "details" correctement) mais je n'arrive pas à associer chacun d'entre eux à une Personne différente....dans ma JTable de résultats, tous les boutons "détails" affiche la meme fiche d'identité : celle de la dernière ligne de la JTable..

    Si vous avez ds idées concernants mes deux problèmes, je suis vraiment preneur car cela fait des jours et des jours que je me creuse la tete mais étant donné que je suis débutant en Java et que je suis tout seul sur ce truc, je m'en remets désormais à vous et à votre aide.

    Merci beaucoup.

    Fabien

  2. #2
    Membre émérite
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Par défaut
    Citation Envoyé par syrius31
    Bonjour tout le monde!


    Je suis nouveau sur ce forum et je suis également débutant en programmation Java.
    Je viens solliciter votre aide quant à deux problèmes urgents sur le projet auquel je participe.
    Bonjour et bienvenue
    Voilà la situation : je dois développer un annuaire informatique permettant entre autres de répertorier toutes les personnes d'une base de données et permettant d'accéder à leurs coordonnées.
    Cet annuaire se présente de la façon suivante: un menu (sous forme de boutons) sur la gauche et le contenu des menus sur la droite (un peu comme sur les sites web quoi).
    Jusque là tout va bien...

    Le premier problème intervient alors ici : afin d'afficher le contenu du menu correspondant au bouton cliqué (accueil, présentation, mot du président, recherche, etc...), je pensais créer des JPanels et lors du clic sur un bouton, j'active le JPanel correspondant et je désactive les autres... Seulement voilà, depuis NetBeans et en mode création graphique (ajout graphique des composants), lorsque je crée un nouveau JPanel, il me décale le précedent ou bien me l'insère dans le précédent.. Or ce que je veux, c'est autant de JPanel parfaitement supperposés qu'il n'y a de boutons dans le menu de gauche! (j'espère que je me fais bien comprendre).

    Ca, c'était pour mon premier problème. Passons maintenant au suivant:
    Il te faut utiliser un CardLayout.
    Commences par ajouter un panel à la taille de ta partie droite et defini le comme CardLayout. Ce dernier permet de superposer des composants mais d'en afficher qu'un seul a la fois.
    Il te suffit ensuite d'ajouter tes panels au CardLayout et de gérer celui qui sera afficher dans l'actionPerformed des bouton -> plus d'info dans la javadoc du CardLayout
    Dans le menu "Recherche" (le coeur du logiciel), je dois etre en mesure d'afficher les résultats de la recherche (en fonction des critères des combo box) dans une JTable où chaque ligne correspondrait à une personne diférente.... De plus, chaque ligne contiendrait un bouton "détail"" (dernière colonne de la JTable prévue à cet effet) qui, lors d'un simple clic sur ce dernier, ouvrirait une nouvelle fenetre indépendante qui serait en fait une fiche d'identité de la personne concernée.... Sur le principe, tout va bien.

    En pratique, je souhaite donc associer à chaque bouton "détails", l'objet de type "Personne" correspondant à la ligne de résultat de telle sorte que chaque bouton ouvre la fiche d'identité correpondante à l'enregistrement (vous l'aurez compris).
    Or ça, je ne sais pas faire...je sais créer le bouton avec BoutonRenderer et BoutonEditor (que j'ai pas tellement compris le fonctionnement d'ailleurs mais qui m'a permis d'afficher les boutons "details" correctement) mais je n'arrive pas à associer chacun d'entre eux à une Personne différente....dans ma JTable de résultats, tous les boutons "détails" affiche la meme fiche d'identité : celle de la dernière ligne de la JTable..
    Dans l'actionPerformed de ton bouton, il te suffit de récupérer la ligne selectionnée, donc ton objet Personne ! non ?

    n!co

    PS : Pas de urgent ou équivalent dans le titre du message, merci

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut
    Tout d'abord, merci de ta réponse!

    Concernant l'histoire des JPanels, je verrai ta méthode si ça marche (pas aujourd'hui car j'ai pas trop le temps today).

    Autrement concernant la JTable, je te montre un bout de code (que j'ai reccupéré plusieurs fois sur divers forum):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
        public void remplirTable(){
           DefaultTableModel modele = (DefaultTableModel)jTable1.getModel();
           int i=0,j=0;
     
           while (i<resultRecherche.size()){ //resultRecherche est l'ensemble des personnes correspondant à la recherche :D
                Personne p=(Personne)resultRecherche.elementAt(i);
                Object[] liste = new Object[6];
                liste[0] = p.PerNom; 
                liste[1] = p.PerPrenom; 
                liste[2] = p.PerPromotion; 
                liste[3] = p.SiteEcole; 
                liste[4] = p.NomCommercial;
                liste[5] = "détails";
     
                TableColumnModel tcm = jTable1.getColumnModel();
                TableColumn tc = tcm.getColumn(5);
                tc.setCellRenderer(new ButtonRenderer());
                tc.setCellEditor(new ButtonEditor(new JCheckBox(),p));
     
     
                modele.addRow(liste); 
                i++;
     
     
     
            }  
        }
    ce qui se passe avec ce code, c'est que je veux afficher les boutons "details" dans la 6eme colonne (TableColumn tc = tcm.getColumn(5)).
    Mais ce que fait ce code, c'est qu'il ecrase TOUS les boutons details de la colonne et les remplace par le meme : celui correspondant à la dernière ligne....
    En fait, dans toute la colonne 6, il crée le meme bouton ouvrant la meme fiche.
    J'espère que je me fais bien comprendre...

    Concernant ma classe Bouton Editor, la voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    public class ButtonEditor extends DefaultCellEditor {
     
        JTable laTable;
        Personne pers;
     
        protected BoutonFiche button;  
        private String    label;  
        private boolean   isPushed;   
     
        public ButtonEditor(JCheckBox checkBox, Personne p) {    
            super(checkBox);
            pers=p;
            System.out.println(p.PerPrenom);
            button = new BoutonFiche(pers);
            button.setOpaque(true);
            button.addActionListener(new ActionListener() {      
                public void actionPerformed(ActionEvent e) {                
     
                    FicheIdentite f=new FicheIdentite(pers);
                    String title="Fiche de "+pers.PerPrenom+" "+pers.PerNom;
                    f.setTitle(title);
                    f.setVisible(true);
                    fireEditingStopped();      
                }    
            });
     
        }   
     
        public Component getTableCellEditorComponent(JTable table, Object value,                   
                boolean isSelected, int row, int column) {
            if (isSelected) {      
                button.setForeground(table.getSelectionForeground());      
                button.setBackground(table.getSelectionBackground());    
            } else{      
                button.setForeground(table.getForeground());      
                button.setBackground(table.getBackground());    
            }    
            label = (value ==null) ? "" : value.toString();    
            button.setText( label );    
            isPushed = true;    
            return button;  
        }   
     
        public Object getCellEditorValue() {    
            if (isPushed)  { 
            System.out.println(button.pers.PerPrenom);
            }    
            isPushed = false;    
            return new String( label ) ;  
        }     
     
        public boolean stopCellEditing() {    
            isPushed = false;    
            return super.stopCellEditing();  
        }   
     
        protected void fireEditingStopped() {    
            super.fireEditingStopped();  
        }
     
     
    }
    Merci de me sortir de là s'il vous plait...lol

    Fabien

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/03/2015, 19h59
  2. [9i] Problème d'affichage d'état avec Forms Builder
    Par ludvyn dans le forum Oracle
    Réponses: 0
    Dernier message: 01/05/2013, 20h17
  3. Problème JPanel et JTable
    Par nolookpass8 dans le forum Composants
    Réponses: 9
    Dernier message: 15/04/2013, 18h23
  4. Réponses: 0
    Dernier message: 05/05/2011, 23h30
  5. [Forms]probléme radio_button sous forme builder
    Par selabd dans le forum Forms
    Réponses: 4
    Dernier message: 03/04/2007, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo