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 :

[JButton] Problème d'affichage/rafraîchissement


Sujet :

Composants Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut [JButton] Problème d'affichage/rafraîchissement
    Bonjour à tous !

    voilà mon soucis :
    Dans un JPanel, j'ai 5 JButton différents : ajout, suppression, édition, valider et annuler, ainsi qu'un JTextfield.
    Dans un autre j'ai un JList.
    Au départ, il n'y a que les 3 premiers qui sont visibles (cf. 1e pièce jointe) et lorsque l'on va cliquer sur ajouter, ou éditer, ces 3 JButton vont disparaître pour laisser la place aux 2 autres (cf. 2e pièce jointe). Il sont donc au même endroit (dans le layout) et voici comment ils sont construits :
    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
    JPanel pnlDTravaux = new JPanel();
     
    pnlDTravaux.setLayout(new GridBagLayout());
     
    gbc.gridheight = 1;//gbc est de type GridBagConstraints
    gbc.gridwidth = 3;
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.insets = new Insets(2, 2, 3, 2);
     
    JPanel pnlBtn13 = new JPanel();
    pnlBtn13.setLayout(new GridLayout(1, 3, 5, 0));
     
    pnlBtn13.add(btnPlusTravaux);
    btnPlusTravaux.setToolTipText("Ajouter un nouveau type de travaux");
    pnlBtn13.add(btnMoinsTravaux);
    btnMoinsTravaux.setToolTipText("Supprimer le type de travaux sélectionné");
    pnlBtn13.add(btnEditTravaux);
    btnEditTravaux.setToolTipText("Modifier les informations");
     
    pnlDTravaux.add(pnlBtn13, gbc);
     
    JPanel pnlBtn23 = new JPanel();
    pnlBtn23.setLayout(new GridLayout(1, 3, 5, 0));
     
    pnlBtn23.add(btnValTravaux);
    pnlBtn23.add(btnAnnTravaux);
     
    btnValTravaux.setVisible(false);
    btnAnnTravaux.setVisible(false);
     
    pnlDTravaux.add(pnlBtn23, gbc);
     
    gbc.gridy++;
     
    pnlDTravaux.add(new JLabel("Type de travaux"), gbc);
     
    gbc.gridy++;
     
    pnlDTravaux.add(tfTravaux, gbc);
     
    pnlTravaux.add(pnlDTravaux, BorderLayout.CENTER);
    les listener sont ajoutés plus loin dans le code, pas de problème là-dessus, les actions s'effectuent :
    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
    		if(btn == btnPlusTravaux)
    		{
    			edtTravaux = false;//boolean indiquant si on est en mode édition (après clic btnEditionTravaux) ou dans le cas d'un nouveau type de travaux
    			tfTravaux.setText("");
    			listTravaux.setEnabled(false);
    			passerModeEdition(tfTravaux, true, btnPlusTravaux, btnMoinsTravaux, btnEditTravaux, btnValTravaux, btnAnnTravaux);
    		}
    		else if(btn == btnMoinsTravaux)
    		{
    			alTravaux.remove(listTravaux.getSelectedIndex());
    			String[] tabTravaux = new String[alTravaux.size()];
    			for(int u = 0 ; u < tabTravaux.length ; u++)
    				tabTravaux[u] = alTravaux.get(u).getTravaux();
    			listTravaux = new JList(tabTravaux);
    			listTravaux.updateUI();
    			listTravaux.repaint();
    		}
    		else if(btn == btnEditTravaux)
    		{
    			edtTravaux = true;
    			listTravaux.setEnabled(false);
    			passerModeEdition(tfTravaux, true, btnPlusTravaux, btnMoinsTravaux, btnEditTravaux, btnValTravaux, btnAnnTravaux);
    		}
    		else if(btn == btnValTravaux)
    		{
    			if(!tfTravaux.getText().trim().equals(""))
    			{
    				if(edtTravaux)
    					alTravaux.set(listTravaux.getSelectedIndex(), new Travaux(tfTravaux.getText()));
    				else
    					alTravaux.add(new Travaux(tfTravaux.getText()));
    				String[] tabTravaux = new String[alTravaux.size()];
    				for(int u = 0 ; u < tabTravaux.length ; u++)
    					tabTravaux[u] = alTravaux.get(u).getTravaux();
    				listTravaux = new JList(tabTravaux);
    				listTravaux.updateUI();
    				listTravaux.repaint();
    				edtTravaux = false;
    				passerModeEdition(tfTravaux, false, btnPlusTravaux, btnMoinsTravaux, btnEditTravaux, btnValTravaux, btnAnnTravaux);
    				listTravaux.setEnabled(true);
    			}
    			else
    			{
    				//TODO JOptionPane blabla pas de type vide...
    			}
    		}
    		else if(btn == btnAnnTravaux)
    		{
    			edtTravaux = false;
    			passerModeEdition(tfTravaux, false, btnPlusTravaux, btnMoinsTravaux, btnEditTravaux, btnValTravaux, btnAnnTravaux);
    			listTravaux.setEnabled(true);
    		}
    Je sais que c'est code n'est pas hyper hyper propre mais pour l'instant, je vais déjà essayer de le faire fonctionner "graphiquement", je verrai plus tard pour le rendre plus propre...

    La méthode passerModeEdition() sert à ... bin passer ou non en mode édition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void passerModeEdition(JTextField tf, boolean edition, JButton btnAjout, JButton btnSup, JButton BtnEdit, JButton btnVal, JButton btnAnn) {
    	tf.setEditable(edition);
    	btnAjout.setVisible(!edition);
    	btnSup.setVisible(!edition);
    	BtnEdit.setVisible(!edition);
    	btnVal.setVisible(edition);
    	btnAnn.setVisible(edition);
    	btnAjout.repaint();
    	btnSup.repaint();
    	BtnEdit.repaint();
    	btnVal.repaint();
    	btnAnn.repaint();
    }
    Et je pense que c'est justement ici que ça foire... j'ai essayé repaint, validate, revalidate, et même updateUI, sur les composants, et sur les containers de ces composants et pourtant une erreur subsiste. En fait le changement se fait correctement, mais les JButton ne s'affichent pas : il faut que je passe la souris par dessus pour qu'il apparaisse. Ce qui n'est pas très pratique, je vous l'accorde...

    Quelqu'un pourrait-il m'aider siouplaît ?

    Merci d'avance
    Images attachées Images attachées   

  2. #2
    Membre averti
    Avatar de omar344
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2007
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 287
    Points : 301
    Points
    301
    Par défaut
    Salut, je crois que tu dois aussi utiliser la méthode revalidate()

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par omar344 Voir le message
    utiliser la méthode revalidate()
    En plus du repaint() ?

    EDIT : j'ai essayé avant, après, et sans le repaint, rien ne fonctionne

  4. #4
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    salut

    il me semble que ce sera plutot le JPanel a revalider car c'est lui le conteneur

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Salut,

    j'ai déjà revalidé le JPanel où se trouvait ces composants (cf. 1er message) mais rien ne change

    EDIT : tous ces composants s'inscrivent dans un "grand" JPanel, où d'autres JPanel comme celui décrit dans le 1er message sont présents. Je sais que normalement, il ne faut pas TOUT revalider pour ne pas "perdre" de temps, mais bon, j'ai essayé quand même, et résultat, au moment de passer de l'affichage des 3 boutons au 2 boutons, il ne se passe rien de spécial (obligé de repasser la souris sur le bouton valider pour l'afficher) mais par contre, lorsque l'on passe des 2 boutons, au 3, l'affichage se fait correctement pourtant, c'est la même fonction qui est appelée...

    J'ai changé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void passerModeEdition(JTextField tf, boolean edition, JButton btnAjout, JButton btnSup, JButton btnEdit, JButton btnVal, JButton btnAnn) {
    	tf.setEditable(edition);
    	btnAjout.setVisible(!edition);
    	btnSup.setVisible(!edition);
    	btnEdit.setVisible(!edition);
    	btnVal.setVisible(edition);
    	btnAnn.setVisible(edition);
     
    	this.revalidate();//
    	this.repaint();//
    }
    J'ai remarqué un autre détail, lors du passage 3 ==> 2, que ce soit en cliquant sur Edition ou Ajout, le bouton Annuler s'affiche, mais pas Valider


    De plus en plus bizarre...

  6. #6
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    Mais this.revalidate() et this.repaint() c'est qui ?
    Ton JPanel ou le JFrame ?

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class PnlParam extends JPanel implements ActionListener
    C'est là-dedans que tout ce passe il y a plusieurs JPanel dedans (les uns en dessous des autres), eux-mêmes constitués de 2 JPanel (gauche et droite, comme dans les pièces jointes)

  8. #8
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    Étant en auto formation sur java, J'ai fait des tests de mon coté afin de comprendre.
    C'est loin d’être optimal(je connais peu java), mais ca pourra peut être t'aider.

    J'ai utilisé des JButtons et des JCheckBox de manière dynamique.

    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
     
    package util;
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
     
    class TestPanelVisible extends JFrame implements ActionListener{
     
        private JPanel PanelMilieu, PanelHaut;
        private JButton btn1;
        private ArrayList<JButton> buttons;
     
        private static int nbr = 1000;
     
        public TestPanelVisible(){
     
            //Taille de l'ecran
            Toolkit tk = Toolkit.getDefaultToolkit();
            Dimension dim = tk.getScreenSize();
     
            setTitle("Test Visible");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(dim.width / 3, dim.height /3);
            setLocationRelativeTo(null);
     
            Container contenu = getContentPane();
            buttons = new ArrayList<JButton>();
     
            btn1 = new JButton("Ajouter Bouton");
            btn1.addActionListener(this);
     
     
            //Creation JPanel
            PanelMilieu = new JPanel(new FlowLayout(FlowLayout.CENTER));
     
            PanelHaut = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 5));
            PanelHaut.add(btn1);
     
            contenu.add(PanelHaut, BorderLayout.NORTH);
            contenu.add(PanelMilieu);
        }
     
        @Override
        public void actionPerformed(ActionEvent e) {
     
            if(e.getSource() == btn1){
                JButton btn = new JButton("Bouton " + nbr);
                btn.setActionCommand(Integer.toString(nbr));
                btn.addActionListener(this);
     
                buttons.add(btn);
     
                PanelMilieu.add(btn);
                //PanelMilieu.repaint();
                PanelMilieu.validate();
     
                nbr++;
     
                System.out.println(buttons.size());
     
            } else if(e.getSource() instanceof JButton){
     
                JButton btn = (JButton)e.getSource();
                btn.setVisible(false);
     
                JCheckBox cbox = new JCheckBox("ID "  + e.getActionCommand());
                cbox.setActionCommand(e.getActionCommand());
                cbox.addActionListener(this);
     
                PanelHaut.add(cbox);
                PanelHaut.validate();
                //PanelHaut.repaint();
            }
     
            if(e.getSource() instanceof JCheckBox){
     
                JCheckBox cbox = (JCheckBox)e.getSource();
                if(cbox.isSelected()){
                    for(JButton b : buttons){
                        if(b.getActionCommand() == e.getActionCommand()){
                            b.setVisible(true);
                            break;
                        }
                    }
     
                    PanelHaut.remove(cbox);
                    //PanelHaut.validate();
                    PanelHaut.repaint();
                }
            }
        }
    }
     
    public class TestDeveloppez {
     
        public static void main(String[] args){
     
            try{
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            }catch(Exception ex){
                JOptionPane.showMessageDialog(null, "Erreur de chargement de theme");
            }
     
            TestPanelVisible fen = new TestPanelVisible();
            fen.setVisible(true);
        }
    }

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Bonjour !

    C'est très gentil de te pencher encore sur mon problème (surtout à 2h du mat' )

    Je vais faire des tests en me basant sur ton code...

    Mais pourquoi utilises-tu dans un cas "validate" et dans l'autre "repaint" ? Quelle est la différence ?

    Merci encore

  10. #10
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    la suite des tests me permet de comprendre la différence entre repaint() et validate() (d’après ma compréhension personnel des lectures et des test).
    Selon les lectures l'un va avec l'autre selon contexte d'affichage.

    De mon coté j'ai modifié le layout de panelhaut sur center, et lorsque l'on utilise repaint ou validate() pour le conteneur on comprend bien que validate recalcule bien le positionnement au sein du conteneur et que repaint() est juste la pour raffraichir l'affichage (repeindre lol).

    Maintenant l’idéal serait qu'un ténor de java apporte son point de vue.

    De ton coté dit moi ce que tu en pense ?

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Je suis tombé là-dessus mais j'ai pas vraiment tout compris ... Perso, (j'ai honte) mais j'appelais ces fonctions un peu à l'arrach' et je regardais ce qui changeait. Mais je pense que tu dois avoir raison pour validate et repaint...

    Par contre, je viens de faire d'autres tests avec validate, repaint, updateUI, et le résultat est toujours le même... L'affichage des 3 boutons se fait sans problème, par contre, pour les 2 boutons, seul le bouton Annuler apparaît, et l'autre je dois passer la souris dessus... Mais quand je ne mets rien pour faire un "rafraichissement" c'est à dire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void passerModeEdition(boolean edition, JButton btnAjout, JButton btnSup, JButton btnEdit, JButton btnVal, JButton btnAnn) {
    	btnAjout.setVisible(!edition);
    	btnSup.setVisible(!edition);
    	btnEdit.setVisible(!edition);
    	btnVal.setVisible(edition);
    	btnAnn.setVisible(edition);
    }
    le comportement est aléatoire ... Je m'en suis rendu compte parce que ça me gavais, du coup, j'ai cliqué comme un malade sur le bouton Annuler (donc retour à l'affichage des 3 boutons) et Editer (retour à l'affichage des 2 boutons) et le comportement est TOTALEMENT ALEATOIRE !! des fois les boutons apparaissent et des fois, je dois passer la souris dessus...

  12. #12
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    voici un autre test avec le minimum qui représente ton schéma de départ
    Qui est plus dans ta méthodologie

    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
     
    package util;
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    class MonPanel extends JPanel implements ActionListener{
     
        private JButton JBnew, JBdelete, JBupdate, JBview, JBundo;
     
        public MonPanel(){
     
            JBnew = new JButton("Ajouter");
            JBnew.setActionCommand("10");
            JBnew.addActionListener(this);
            JBnew.setVisible(false);
     
            add(JBnew);
     
            JBdelete = new JButton("Supprimer");
            JBdelete.setActionCommand("20");
            JBdelete.addActionListener(this);
            JBdelete.setVisible(false);
     
            add(JBdelete);
     
            JBupdate = new JButton("Modifier");
            JBupdate.addActionListener(this);
            JBupdate.setActionCommand("30");
            JBupdate.setVisible(false);
     
            add(JBupdate);
     
            JBview = new JButton("Edition");
            JBview.setActionCommand("100");
            JBview.addActionListener(this);
     
            JBundo = new JButton("Annuler");
            JBundo.setActionCommand("200");
            JBundo.addActionListener(this);
            JBundo.setVisible(false);
     
            add(JBview);
            add(JBundo);
     
        }
     
        @Override
        public void actionPerformed(ActionEvent e) {
     
            JButton btn = (JButton)e.getSource();
            int action = Integer.valueOf(e.getActionCommand());
     
            if(btn == JBview)
                this.PasserModeEditon(true);
     
            if(btn == JBundo)
                this.PasserModeEditon(false);
     
            switch (action){
                case 10:
                    System.out.println("Action ajouter");
                    break;
                case 20:
                    System.out.println("Action supprimer");
                    break;
                case 30:
                    System.out.println("Action modifier");
                    break;
                default:
                    System.out.println(e.getActionCommand());
            }
     
        }
     
        private void PasserModeEditon(Boolean edition){
     
            JBdelete.setVisible(edition);
            JBnew.setVisible(edition);
            JBupdate.setVisible(edition);
            JBundo.setVisible(edition);
     
            JBview.setVisible(!edition);
     
            this.validate();
            this.repaint();
        }
    }
     
    class MaFenetrePanel extends JFrame{
     
        private MonPanel pan;
     
        public MaFenetrePanel(){
     
            //Taille de l'ecran
            Toolkit tk = Toolkit.getDefaultToolkit();
            Dimension dim = tk.getScreenSize();
     
            setTitle("Test visible");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(dim.width / 2, dim.height /2);
            setLocationRelativeTo(null);
     
            pan = new MonPanel();
            pan.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
     
            getContentPane().add(pan);
        }
    }
     
    public class TestVisible {
     
        public static void main(String[] args){
            try{
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            }catch(Exception ex){
                JOptionPane.showMessageDialog(null, "Erreur de chargement de theme");
            }
     
            MaFenetrePanel fen = new MaFenetrePanel();
            fen.setVisible(true);
        }
    }
    a suivre...

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Effectivement, ton mini code reprend presque ce que je veux faire, il fonctionne très bien en plus, mais quand je l'adapte au mien, ça ne fonctionne pas

    Je vais laisser cette partie de coté, je reviendrai plus tard dessus, mais si quelqu'un d'autre à une idée, qu'il n'hésite surtout pas !!

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Bonsoir.
    Pourquoi veux-tu absolument placer les boutons au même endroit? Il est plus simple de placer les boutons "Valider" et "Annuler" à côté ou en dessous du champ de saisie? Cela facilite la vie à l'utilisateur et tu n'auras pas toutes les difficultés actuelles .
    Utilise la méthode setDefaultButton() de la classe JRootPane pour faire de ton bouton Valider le bouton par défaut de la fenêtre. Documentation ici

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/10/2014, 10h22
  2. Problème d'affichage JTextField/JButton
    Par Nat_33 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 16/10/2012, 19h12
  3. Problème d'affichage JTextField/JButton
    Par Nat_33 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 16/10/2012, 18h03
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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