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

 Java Discussion :

difficultés avec JRadioButton


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 52
    Par défaut difficultés avec JRadioButton
    Bonjour !
    Je veux avoir une popup avec une liste de choix dont un est sélectionné selon un prifl récupéré via le contrôleur.
    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
    public class PopupOptionsSoldeFutur extends JPanel implements Cliquable {
        private static JRadioButton[] choix = {
                new JRadioButton("fin du mois"),
                new JRadioButton("au plus bas"),
                new JRadioButton("au plus haut"),
                new JRadioButton("à la date : ")
        };
        Controleur c;
        public PopupOptionsSoldeFutur(Controleur c) {
            this.c = c;
            GridBagLayout gbl = new GridBagLayout();
            this.setLayout(gbl);
            GridBagConstraints gbc = new GridBagConstraints();
            ButtonGroup bg = new ButtonGroup();
            gbc.gridx = 0;
            gbc.gridy = 0;
            for (JRadioButton jrb : choix) {
                this.add(jrb, gbc);
                bg.add(jrb);
                gbc.gridy++;
            }
            gbc.gridy --;
            gbc.gridx++;
            IntTextField jour = new IntTextField();
            jour.setPreferredSize(new Dimension(70,20));
            this.add(jour, gbc);
            if (c.getInfosUtilisateur().getPreferencesSoldeFutur().getTypeOption() == TypeOption.LOW)
                choix[1].isSelected();
            else if (c.getInfosUtilisateur().getPreferencesSoldeFutur().getTypeOption() == TypeOption.HIGH)
                choix[2].isSelected();
            else if (c.getInfosUtilisateur().getPreferencesSoldeFutur().getDateOptionnelle() == 31)
                choix[0].isSelected();
            else {
                choix[3].isSelected();
                jour.setValue(c.getInfosUtilisateur().getPreferencesSoldeFutur().getDateOptionnelle());
            }
        }
    Problème : Aucun n'est sélectionné quand la popup s'affiche. Je fais quoi mal ?

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Cette partie de code est censé sélectionner le "bon" bouton.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     if (c.getInfosUtilisateur().getPreferencesSoldeFutur().getTypeOption() == TypeOption.LOW)
                choix[1].isSelected();
            else if (c.getInfosUtilisateur().getPreferencesSoldeFutur().getTypeOption() == TypeOption.HIGH)
                choix[2].isSelected();
            else if (c.getInfosUtilisateur().getPreferencesSoldeFutur().getDateOptionnelle() == 31)
                choix[0].isSelected();
            else {
                choix[3].isSelected();
                jour.setValue(c.getInfosUtilisateur().getPreferencesSoldeFutur().getDateOptionnelle());
            }
    Seulement il ne modifie aucun bouton. isSelected() est une méthode qui retourne l'état de la sélection. Pour modifier l'état, c'est setSelected( true ou false ).

    A noter que

    1. utilise un ButtonGroup pour gérer automatiquement la sélection unique et exclusive propre aux radio boutons
    2. sache que tu peux faire facilement un menu popup avec des radiobuttons avec la classe JPopupMenu qui est standard pour ça (dans l'example, je l'utilise en menu contextuel (donc sur clic droit, mais on peut utiliser showPopup pour faire ce qu'on veut (affichage en cliquant sur un bouton par exemple).

      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
      public class MenuRadio {
       
      	public enum PrefValue {
      		VAL1,
      		VAL2,
      		VAL3,
      		VAL4
      	}
       
      	private PrefValue pref = PrefValue.VAL2;
       
       
      	public static void main(String[] args) {
       
      		JFrame frame = new JFrame("Radio menu");
       
      		JPanel panel = new JPanel();
       
      		MenuRadio menuRadio = new MenuRadio();
      		JPopupMenu popup = new JPopupMenu();
      		ButtonGroup group = new ButtonGroup();
      		for(PrefValue pref : PrefValue.values()) {
      			popup.add(createPrefMenu(menuRadio,pref,group));
      		}
       
      		panel.setComponentPopupMenu(popup);
       
      		// ça c'est seulement si tu ne veux pas que le menu se ferme quand on sélectionne une option
      		popup.addPopupMenuListener(new PopupMenuListener() {
       
      			boolean cancel=false;
       
      			@Override
      			public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
      				cancel=false;
      			}
       
      			@Override
      			public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
      				if ( !cancel ) {
      					SwingUtilities.invokeLater(()->popup.setVisible(true));
      				}
      			}
       
      			@Override
      			public void popupMenuCanceled(PopupMenuEvent e) {
      				cancel=true;
      			}
      		});
       
      		frame.getContentPane().add(panel);
       
      		frame.setSize(600, 400);
      		frame.setLocationRelativeTo(null);
      		frame.setVisible(true);
       
       
       
      	}
       
       
      	private static JMenuItem createPrefMenu(MenuRadio menuRadio, PrefValue pref, ButtonGroup group) {
      		JRadioButtonMenuItem menuitem = new JRadioButtonMenuItem(pref.name());
      		group.add(menuitem);
      		menuitem.setSelected(pref==menuRadio.pref); 
      		menuitem.addItemListener(e-> {
      			 if (e.getStateChange() == ItemEvent.SELECTED) {
      				menuRadio.pref=pref;
      				System.out.println("Préférence nouvelle valeur : " + pref);
      			 }
       
      		});
      		return menuitem;
      	}
       
      }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 52
    Par défaut
    Merci beaucoup, problème résolu

    Juste à propos de
    utilise un ButtonGroup pour gérer automatiquement la sélection unique et exclusive propre aux radio boutons
    Tu n'as pas vu que je l'utilisais ou je ne l'utilise pas correctement ? (code initial : )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
            ButtonGroup bg = new ButtonGroup();
            gbc.gridx = 0;
            gbc.gridy = 0;
            for (JRadioButton jrb : choix) {
                this.add(jrb, gbc);
                bg.add(jrb);
                gbc.gridy++;
            }
            ...
    Et merci pour le JPopupMenu... j'en suis à la fin de mon projet donc je ne vais pas tout réécrire mais ça me sera sans doute utile pour le futur, je ne connaissais pas !

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par WAitWaitW Voir le message
    Tu n'as pas vu que je l'utilisais ou je ne l'utilise pas correctement ? (code initial : )
    Ah, oui, je n'avais pas vu au milieu de l'initialisation du GridBagLayout...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SSIS][2k5]Difficulté avec SSIS
    Par david71 dans le forum SSIS
    Réponses: 9
    Dernier message: 05/01/2006, 19h28
  2. [JS] Difficulté avec le onmouseover...
    Par Pleymo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/11/2005, 12h09
  3. [VBA] difficultés avec une requête INSERT
    Par elias dans le forum Access
    Réponses: 7
    Dernier message: 06/09/2005, 14h53
  4. Difficultés avec - onchange - !
    Par zakuli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/07/2005, 12h00
  5. Difficultés avec TMenuItem.OnDrawItem
    Par ybruant dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/01/2005, 11h07

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