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

Composants Java Discussion :

[Java][Swing] Un composant pour sélectionner


Sujet :

Composants Java

  1. #1
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut [Java][Swing] Un composant pour sélectionner
    Bonjour,

    Je reviens un peu poster ici. J'ai attaqué une petite application qui vise à sélectionner dans une liste restrictive des chiffre via des nom correspondant. Ma première idée c'est porté sur le jComboBox mais a ce que j'ai compris il ne servirais pas à ça.

    Par défaut, on affiche "Dès 4" mais on peut sélectionner Dès 6, Dès 8, Dès 10, Dès 12, Dès 20, Dès 100.

    Ensuite, via un jButton classique, je regarde quel valeur on a. Si c'est par défaut c'est Dès 4 donc, on aura la valeur 4... Si on sélectionne Dès 8, on aura la valeur 8 etc.

    Je ne sait pas si c'est compréhensible ce que je veux faire

    Je vous remercie beaucoup pour vos informations.
    Cordialement.

  2. #2
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    Je ne sait pas si c'est compréhensible ce que je veux faire
    J'ai parfaitement rien compris à ce que tu essai de faire

  3. #3
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ben si JComboBox me semble parfaitement correspondre à ça: l'idéal est de créer une classe "De", qui possèderai un entier "faces" (par exemple), puis de redéfinir la méthode toString, bref un truc comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class De{
     private int faces;
     
     //Constructeurs, getters, setters...
     
     public String toString(){
      return "Dès "+faces;
     }
    }
    Ensuite tu rajoutes les "Dés" à ta JComboBox: ce qui s'affiche dans l'interface, c'est le toString. Ce que tu récupère dans le programme, c'est l'objet Dé, avec toutes les fonctions qui vont bien.

  4. #4
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Donc, si je suis le raisonnement, ça reviendrais à faire une sorte de surcharge qui obligerais d'un cotés à piloter le composant graphique qui serais alors indépendant de la réponse donné par le composant lui même.

    Ok je vais essayer.

  5. #5
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Plus ou moins, l'idée est surtout de penser en objet:
    tu as une liste déroulante, tu veux qu'elle apparaisse sous une forme, et tu veux la traiter sous une autre forme.
    L'idéal est donc de créer un objet qui aurait exactement ce comportement: la surcharge du toString ne sert qu'à changer l'apparence qu'à cet objet dans ta liste.

  6. #6
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Donc a doit se comporté ainsi.

    Le main commande a la classe d'afficher dans la liste un String charger (Ok)
    Si sélection, on retrouve comment le résultat ? (Ca j'ai pas bien compris en fait)
    Une fois la valeur chiffre obtenu on traite (Ok)

    C'est la partie en gras que je n'ai pas compris...

  7. #7
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Et bien si tu utilises une JComboBox, tu places dedans tes objets "Dé" dedans, et non pas des String, c'est là toute l'astuce! la méthode addItem prend en paramètre un "Object", pas forcément une "String"!
    Ensuite quand tu en as besoin (quand tu appuie sur le bouton par exemple), tu peux récupérer l'objet sélectionné dans ta liste via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object o = maListe.getSelectedItem();
    Comme tu sais que tu as mis des objets "Dé" dans ta liste, tu peux le caster:
    Ensuite comme ta class Dé est bien chiadée, tu appelle une méthode style

    Dont le but sera d'afficher la variable qui contient le nombre de faces ("faces" dans mon exemple plus haut)

  8. #8
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Alors voila ce que j'ai écrit:

    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
     
    class De {
        @Override
        public String toString() {
            return "Dès" + Faces;
        }
     
        private int Faces;
    }
     
    public class Form1 extends javax.swing.JFrame {
     
        /** Creates new form Form1 */
        public Form1() {
            initComponents();
     
            //Nom programme, Version Programme
            String NomPrg = "Java Dès RPG", VerPrg = "1.0";
     
            //Titre du programme
            this.setTitle(NomPrg + " - " + VerPrg);
     
            //Interdiction de modifier la taille de la fenêtre
            this.setResizable(false);
     
            //Efface les jTexts
            jTextField1.setText("");
            jLabel1.setText("Démarrage du programme : Ok");
     
            //Initialisation du jComboBox1
            jComboBox1.toString();
        }
    Deux questions alors à ce code:

    -J'ai remarqué que dans ma classe, on me propose d'ajouter un @Override mais je ne voie pas bien à quoi il sert.
    -Ensuite j'ai hélas toujours dans mon jComboBox1 "Item1" "Item 2" "Item 3" "Item 4"... Faut-il prendre le composant en properties et lui écrire "Dès 4" "Dès 6" ... "Dès 100" ?

  9. #9
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Le @override est un simple indicateur destiné au compilateur, voir le lien suivant pour un petit cours:
    http://www.developpez.net/forums/d34...acte-override/

    Sinon, il faudrait voir comment tu rajoutes tes objets dans la liste, ça n'apaprait pas dans le code que tu as posté.

    De plus la ligne
    n'a aucun effet: elle retourne une String qui permettrai éventuellement d'afficher une JComboBox dans la console, mais d'une part, cette String ne contient pas grand chose d'interessant, d'autre part tu ne t'en sert pas.

  10. #10
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Le @override, j'avoue que c'est bien la première fois qu'il m'en parle mais je vais m'instruire.

    Après j'ai juste mis le composant sur ma feuille depuis netbeans, et ensuite je comptais le chargé avec la ligne qui sert à rien. Mais après j'ai peut-être oublier quelque chose... J'avoue que je ne sait trop.

  11. #11
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    En fait tout se passe dans la méthode initComponents.
    Soit dit en passant le coup des "item1 item2" me fait pas mal penser à une population par défaut (donc sans rapport avec ce que tu veux faire) de ta JComboBox.
    Je ne connais pas NetBeans, ni la manière dont il génère des interfaces Swing, mais je pense qu'il faut que tu repasses sur le code généré pour y mettre tes propres objets.

  12. #12
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    C'est ce que j'ai fait. Et ça marche.
    J'ai remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Item 1
    Item 2
    Item 3
    Item 4
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dès 4
    Dès 6
    Dès 8
    Dès 10
    Dès 12
    Dès 20
    Dès 100
    Maintenant il faut que lorsque j'appuie sur jButton1, je face apparaître la valeur "faces" de la sélection du jComboBox modifier par la classe.

    Edit:
    Je viens d'essayer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            //L'utilisateur lance un calcul
     
            //Regarde la valeur de sélection de jComboBox1
            String Valeurs = new De().toString();
     
            jTextField1.setText(Valeurs);
     
        }
    Ca me retourne systèmatiquement "Dès0".

  13. #13
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Attention, l'initialisation de tes "Dé" doit se faire lors de la création de ta JComboBox! (probablement dans initComponent, il faudrait vraiment que tu postes le code de cette méthode car tout se joue à ce moment là).

    Dans actionPerformed, tu te contentes de récupérer le Dé sélectionné, tu n'a pas a en recréer un!

    De plus lorsque tu crée un Dé, son attribut faces, qui est un int, prend la valeur par défaut des int, c'est à dire 0.
    Pour changer cette valeur, il faut rajouter un getter et un setter dans la classe Dé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class{
    ... // le code que tu as déjà mis
     
    public void setFaces(int valeur){
     this.faces = valeur;
    }
     
    public int getFaces(){
     return this.faces;
    }
     
    public
    }
    Enfin souviens toi que la méthode toString avait pour but de faire s'afficher le dé dans la JComboBox. Il me semble que ce que tu voulais faire à la base était, lors du click sur le bouton, uniquement indiquer le nombre de faces du dé!
    Pour moi le code de ton actionPerformed devrait plutot ressembler à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            //L'utilisateur lance un calcul
     
            //Regarde la valeur de sélection de jComboBox1
            De d = (De) jComboBox1.getSelectedItem();
     
            jTextField1.setText(""+d.getFaces());
     
        }
    Ce code ne marchera bien sur qu'à la condition que tu aie bien mis des objets "De" dans ta JComboBox, et non pas des objets "String".

    Pour indice, dans ce que j'essaye de te faire faire, tu ne devrais JAMAIS avoir à écrire le mot "String" sauf dans la méthode toString que tu as dejà écrite

  14. #14
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Voila le code manquant:
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
     /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
     
            jPanel1 = new javax.swing.JPanel();
            jComboBox1 = new javax.swing.JComboBox();
            jPanel2 = new javax.swing.JPanel();
            jButton1 = new javax.swing.JButton();
            jToolBar1 = new javax.swing.JToolBar();
            jLabel1 = new javax.swing.JLabel();
            jPanel3 = new javax.swing.JPanel();
            jTextField1 = new javax.swing.JTextField();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenu2 = new javax.swing.JMenu();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     
            jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Choix"));
     
            jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dès 4", "Dès 6", "Dès 8", "Dès 10", "Dès 12", "Dès 20", "Dès 100" }));
     
            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jComboBox1, 0, 97, Short.MAX_VALUE)
                    .addContainerGap())
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(121, Short.MAX_VALUE))
            );
     
            jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Calcul"));
     
            jButton1.setText("Lancer");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });
     
            javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
            jPanel2.setLayout(jPanel2Layout);
            jPanel2Layout.setHorizontalGroup(
                jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jButton1)
                    .addContainerGap(51, Short.MAX_VALUE))
            );
            jPanel2Layout.setVerticalGroup(
                jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup()
                    .addComponent(jButton1)
                    .addContainerGap(39, Short.MAX_VALUE))
            );
     
            jToolBar1.setFloatable(false);
            jToolBar1.setRollover(true);
     
            jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18));
            jLabel1.setText("jLabel1");
            jToolBar1.add(jLabel1);
     
            jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Résultats"));
     
            jTextField1.setColumns(5);
            jTextField1.setFont(new java.awt.Font("Tahoma", 0, 24));
            jTextField1.setText("jTextField1");
     
            javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
            jPanel3.setLayout(jPanel3Layout);
            jPanel3Layout.setHorizontalGroup(
                jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
            jPanel3Layout.setVerticalGroup(
                jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup()
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
     
            jMenu1.setText("Fichier");
            jMenuBar1.add(jMenu1);
     
            jMenu2.setText("Options");
            jMenuBar1.add(jMenu2);
     
            setJMenuBar(jMenuBar1);
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addContainerGap())
                .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
            );
     
            pack();
        }// </editor-fold>
    Mais attention, NetBeans m'interdit d'y faire quoi que ce soit dedans !

  15. #15
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Euh... alors là je sais pas trop quoi répondre, je ne sais pas du tout comment est généré ce code, en revanche je sais qu'il ne correspond pas à ce qu'on fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dès 4", "Dès 6", "Dès 8", "Dès 10", "Dès 12", "Dès 20", "Dès 100" }));
    Sur cette ligne là tu rajoutes 7 String à ta JComboBox. Ca s'affiche bien, mais nous, on veut y rajouter des "De" pour pouvoir les gérer derrière!
    Il faudrait donc remplacer par un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    De quatre = new De();
    quatre.setFaces(4);
    De six= new De();
    six.setFaces(6);
    .../etc
    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new De[] { quatre, six, huit, etc...}));

    Si tu tiens à passer par le générateur d'interface de NetBeans, il va falloir que tu mettes la main sur quelqu'un qui connait NetBeans! (il y a un forum dédié je crois).

  16. #16
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Ok!

    Déjà j'ai pas mal avancé. Je regarderais sur le forum netbeans, voir si je trouve quelqu'un qui saurais comment m'aider. Mais déjà un grand merci pour ce coup de main.

  17. #17
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    J'ai été voir sur le forum de NetBens, et pas de réponses. Je pense alors que c'est peine perdu avec ce composant !

    Existerais-il une autre solution ?

  18. #18
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    Voila le code manquant:
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
     /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
     
            jPanel1 = new javax.swing.JPanel();
            jComboBox1 = new javax.swing.JComboBox();
            jPanel2 = new javax.swing.JPanel();
            jButton1 = new javax.swing.JButton();
            jToolBar1 = new javax.swing.JToolBar();
            jLabel1 = new javax.swing.JLabel();
            jPanel3 = new javax.swing.JPanel();
            jTextField1 = new javax.swing.JTextField();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenu2 = new javax.swing.JMenu();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     
            jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Choix"));
     
            jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dès 4", "Dès 6", "Dès 8", "Dès 10", "Dès 12", "Dès 20", "Dès 100" }));
     
            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jComboBox1, 0, 97, Short.MAX_VALUE)
                    .addContainerGap())
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(121, Short.MAX_VALUE))
            );
     
            jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Calcul"));
     
            jButton1.setText("Lancer");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });
     
            javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
            jPanel2.setLayout(jPanel2Layout);
            jPanel2Layout.setHorizontalGroup(
                jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jButton1)
                    .addContainerGap(51, Short.MAX_VALUE))
            );
            jPanel2Layout.setVerticalGroup(
                jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup()
                    .addComponent(jButton1)
                    .addContainerGap(39, Short.MAX_VALUE))
            );
     
            jToolBar1.setFloatable(false);
            jToolBar1.setRollover(true);
     
            jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18));
            jLabel1.setText("jLabel1");
            jToolBar1.add(jLabel1);
     
            jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Résultats"));
     
            jTextField1.setColumns(5);
            jTextField1.setFont(new java.awt.Font("Tahoma", 0, 24));
            jTextField1.setText("jTextField1");
     
            javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
            jPanel3.setLayout(jPanel3Layout);
            jPanel3Layout.setHorizontalGroup(
                jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
            jPanel3Layout.setVerticalGroup(
                jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup()
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
     
            jMenu1.setText("Fichier");
            jMenuBar1.add(jMenu1);
     
            jMenu2.setText("Options");
            jMenuBar1.add(jMenu2);
     
            setJMenuBar(jMenuBar1);
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addContainerGap())
                .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
            );
     
            pack();
        }// </editor-fold>
    Mais attention, NetBeans m'interdit d'y faire quoi que ce soit dedans !
    Heu ca serai pas du code généré via un editeur graphique c'est horreure?

  19. #19
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ben la solution crade c'est de continuer à gérer des String, et de faire du cas par cas dans l'actionPerformed pour savoir quoi afficher en fonction du dé.
    Genre si le contenue est "Dès 4", tu sais qu'il s'agit d'un dé avec la valeur 4.
    Mais c'est très moche.

    Il me semble que lors de la création d'interfaces, tu peux injecter ton propre code, justement pour pouvoir personnaliser... comment as-tu spécifié comment populer (populationner?) ta ComboBox? As un moment tu lui as dit qu'il fallait mettre "Dès 4", "Dès 6" etc. ? a mon avis ça ne doit pas être bien loin...

    Au pire si tu ne trouves vraiment pas, je ne pense pas que Netbeans t'empêche de repasser à la main sur le code généré, dans la mesure ou tu ne le régénéreras pas derrière... par contre il faudra faire une croix sur le générateur automatique... (bohh Swing à la main c'est pas si compliqué une fois qu'on a compris le principe...)

  20. #20
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    C'est en fait qu'il me warning sérieux quand je reprend la main. Faire tout à la main, je suis assez d'accord mais alors pourquoi avoir créer un composant qui ne sert pas à grand chose qu'à réalisé du pas propre ?

    Une solution serais de créer le composant à la main a partir de classes et de l'utilisé au bon endroit. Ca serais plus propre. Ca n'empêche que voila ! Je suis coincé avec ce truc !

Discussions similaires

  1. [Java][Swing] Récupérer composant
    Par stanilas dans le forum Composants
    Réponses: 2
    Dernier message: 06/02/2011, 13h22
  2. [Java][Swing] Un composant pour sélectionner
    Par Caxton dans le forum NetBeans Platform
    Réponses: 0
    Dernier message: 03/11/2009, 12h48
  3. [FLASH 8] Composant pour sélectionner une couleur
    Par aldo-tlse dans le forum Flash
    Réponses: 1
    Dernier message: 07/12/2007, 15h03
  4. Réponses: 4
    Dernier message: 25/11/2005, 11h25
  5. Composant pour sélectionner l'heure et la durée
    Par popo dans le forum Composants VCL
    Réponses: 14
    Dernier message: 18/06/2005, 01h21

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