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

AWT/Swing Java Discussion :

isSelected pour JRadioButton et JCheckBox


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut isSelected pour JRadioButton et JCheckBox
    Bonsoir,

    J'ai une question qui peut etre parait banale mais je n'arrive pas à comprendre pourquoi la méthode isSelected pour les composants JRadioButton et JCheckBox ne fonctionnent pas malgré le code me semble juste.
    S'il vous plait si quelqu'un peut m'aider.
    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
    import javax.swing.*;
     
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
     
     
    public class Graphic extends JFrame implements ActionListener{
    private static final int FRAME_WIDTH = 500;
    private static final int FRAME_HEIGHT =500;
    private static final int FRAME_X_ORIGIN =250;
    private static final int FRAME_Y_ORIGIN =250;
    JTextField t1;
    JButton b;
    JLabel label1, label2, label3;
    JCheckBox cbBtn;
    JCheckBox cbBtn1;
    JCheckBox cbBtn2;
    ButtonGroup languageGroup = new ButtonGroup( );
    JRadioButton br1,br2,br3;
     
     
     
     
    public static void main(String [] arg){
    Graphic frame = new Graphic();
    frame.setVisible(true);
    }
    public Graphic(){
    	Container contentPane;
    	setSize (FRAME_WIDTH, FRAME_HEIGHT);
        setTitle("My First Frame");
        setLocation(FRAME_X_ORIGIN,FRAME_Y_ORIGIN);
        contentPane=getContentPane();
        contentPane.setBackground(Color.CYAN);
        contentPane.setLayout(new FlowLayout());
        label1 = new JLabel("Choose your age");
        label2 = new JLabel("bbb");
       label3 = new JLabel("ccc");
        cbBtn= new JCheckBox("18-20 years old");
        cbBtn1= new JCheckBox("20-23 years old");
        cbBtn2= new JCheckBox("+23 years old");
     
        t1=new JTextField();
        b = new JButton("ok");
        contentPane.add(label1);
        contentPane.add(label2);
        contentPane.add(label3);
        contentPane.add(cbBtn);
        contentPane.add(cbBtn1);
        contentPane.add(cbBtn2);
        if (cbBtn.isSelected()) 
        {
       System.out.println("You age is"+ cbBtn.getText());
        } 
     
     
        	//else{
        	//	System.out.println("You age is "+ cbBtn2.getText ());
     
        	//}
        //}
     
     
        String[] comboBoxItem= {"Woman", "Man"};
        JComboBox comboBox = new JComboBox(comboBoxItem);
        contentPane.add(comboBox);
     
        //String selection = (String) comboBox.getSelectedItem();
        //System.out.println(selection);
     
        t1.setPreferredSize( new Dimension( 200, 24) );
         br1 = new JRadioButton("un");
         br2 = new JRadioButton("deux");
         br3 = new JRadioButton("trois");
        // ajout des boutons radio dans le groupe bg
           languageGroup.add(br1);
           languageGroup.add(br2);
           languageGroup.add(br3);
        contentPane.add(t1);
        contentPane.add(b);
        contentPane.add(br1);
        contentPane.add(br2);
        contentPane.add(br3);
        if (br1.isSelected()){
        	System.out.println("AAAAAAAAA");
        }
     
        b.addActionListener(this);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
     
     
    }
    public void actionPerformed(ActionEvent e)
    {
    	String x=t1.getText();
    	label1.setText(x);
    	System.out.println("there !");
     
    }
     
    }

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    La méthode fonctionne mais elle ne semble pas placé au bon endroit pour faire ce que tu veux.

    Tu mets ton test dans le constructeur de ta classe, ce bout de code va être exécuté une seule fois à la création de ton objet, quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main(String [] arg){
    	Graphic frame = new Graphic(); // Ici
    	frame.setVisible(true);
    }
    De base, tes checkbox ne sont pas cochées, c'est pour ça que tu n'as pas de sortie dans la console.

    Une façon de "régler" le problème est de mettre la vérification dans ta méthode "actionPerformed", comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void actionPerformed(ActionEvent e)
    {
    	String x=t1.getText();
    	label1.setText(x);
    	System.out.println("there !");
    	if (br1.isSelected()){
        	System.out.println("AAAAAAAAA");
        }
    }
    Et maintenant si ta case "br1" est cochée, lorsque tu cliquera sur le bouton "ok" tu verras s'afficher dans la console le fameux "AAAAAA"

    Apres tu peux aussi définir ta case comme cochée par défaut, en la déclarant comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    br1 = new JRadioButton("un",true);
    Mais ça ne doit pas être ton but !

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut
    Bonjour, et merci pour votre réponse j'ai changé et ça marche mais ma question la vérification de cocher un RadioButton doit être relié à un évènement qui est le clic sur le bouton.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Je suis pas sur d'avoir compris ce que tu veux faire, dis moi si je me plante mais tu veux que la vérification ai lieu quand l'utilisateur clique sur une des cases à cochées ?

    Si c'est ça, il faut ajouter des ActionListener directement sur tes cases à cochées, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    br1 = new JRadioButton("un",true);
    br2 = new JRadioButton("deux");
    br3 = new JRadioButton("trois");
    br1.addActionListener(this); //On met "this" car ton objet Graphic implémente l'interface ActionListener
    br2.addActionListener(this);
    br3.addActionListener(this);
    Ensuite, dans ton actionPerformed tu peux faire tes vérification :
    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
     
    public void actionPerformed(ActionEvent e)
    {
    	String x=t1.getText();
    	label1.setText(x);
     
    	if (br1.isSelected()){
        	System.out.println("AAAAAAAAA");
        } else if (br2.isSelected()) {
        	System.out.println("BBBBBBBBB");
        } else if (br3.isSelected()) {
        	System.out.println("CCCCCCCCC");
        } else {
        	System.out.println("Bouton");
        }
    }
    Apres avec plus de précision je pourrais sans doute plus t'aider

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut
    Si je veux faire deux boutons et un label initialisé à 0 lorsque je clique sur le bouton start le label est incrementé de 1 chaque seconde et lorsque je clique sur stop le label stop de changer en principe je dois utiliser les threads mais je n'arrive pas à voir comment exactement.

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut
    oui je comprends bien ce que tu as déjà fait (tu as ajouter un Listener pour le radiobutton ) mais la vérification ne s'effectue que lorsque je clique sur le bouton OK.
    bon ça me semble logique parce que si vous avez un formulaire et lorsque vous cliquer sur le bouton ok on doit vérifier si tous les champs sont remplis, donc c'est clair.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Si je veux faire deux boutons et un label initialisé à 0 lorsque je clique sur le bouton start le label est incrementé de 1 chaque seconde et lorsque je clique sur stop le label stop de changer en principe
    Ah oui donc pas ça n'a pas vraiment de rapport avec un formulaire classique...

    je dois utiliser les threads mais je n'arrive pas à voir comment exactement.
    Alors oui pour le côté thread mais un objet Java peut te simplifier la vie, c'est le Timer. Je n'ai plus le temps pour le moment sinon j'en aurais adapté un sur ton projet pour te montrer, essaye de regarder de ton coté et sinon je te poste une version d'ici à demain mais ce n'est pas de la gestion de thread, c'est simplifié.

    oui je comprends bien ce que tu as déjà fait (tu as ajouter un Listener pour le radiobutton ) mais la vérification ne s'effectue que lorsque je clique sur le bouton OK.
    bon ça me semble logique parce que si vous avez un formulaire et lorsque vous cliquer sur le bouton ok on doit vérifier si tous les champs sont remplis, donc c'est clair.
    Non justement, en ajoutant le listener directement sur la radio, dès que tu clique sur une radio ça déclenche le actionPerformed pour lancer tes vérifications. Apres le fonctionnement classique c'est comme tu l'as dis, de vérifier une fois que l'utilisateur clique sur le bouton ok.

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut
    ok c'est pas la peine merci pour vos conseils

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Rooh faut pas prendre la mouche

    J'ai commencé en vitesse, jette un œil et si tu ne comprends pas certaines choses ou si tu veux que je te montre d'autres trucs n'hésite pas à répondre ne dessous

    Tu as juste a cliquer sur le bouton "ok" et le timer va se lancer en remplaçant le label1

    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
     
    import javax.swing.*;
     
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.TimerTask;
     
     
     
    public class Graphic extends JFrame implements ActionListener{
    	private static final int FRAME_WIDTH = 500;
    	private static final int FRAME_HEIGHT =500;
    	private static final int FRAME_X_ORIGIN =250;
    	private static final int FRAME_Y_ORIGIN =250;
    	JTextField t1;
    	JButton b;
    	JLabel label1, label2, label3;
    	JCheckBox cbBtn;
    	JCheckBox cbBtn1;
    	JCheckBox cbBtn2;
    	ButtonGroup languageGroup = new ButtonGroup( );
    	JRadioButton br1,br2,br3;
     
    	//modif
    	java.util.Timer timer;
    	int tempsPasse = 0;
    	//ENDMODIF
     
    public static void main(String [] arg){
    	Graphic frame = new Graphic();
    	frame.setVisible(true);
    }
     
    //MODIF
    public void initTimer() {
    	timer = new java.util.Timer(); 
    	timer.scheduleAtFixedRate(new TimerTask() {
     
    		@Override
    		public void run() {
    			tempsPasse++;
    			label1.setText(Integer.toString(tempsPasse));
    		}
    	}, 1000, 1000);
    }
    //ENDMODIF
     
    public Graphic(){
    	Container contentPane;
    	setSize (FRAME_WIDTH, FRAME_HEIGHT);
        setTitle("My First Frame");
        setLocation(FRAME_X_ORIGIN,FRAME_Y_ORIGIN);
        contentPane=getContentPane();
        contentPane.setBackground(Color.CYAN);
        contentPane.setLayout(new FlowLayout());
        label1 = new JLabel("Choose your age");
        label2 = new JLabel("bbb");
       label3 = new JLabel("ccc");
        cbBtn= new JCheckBox("18-20 years old");
        cbBtn1= new JCheckBox("20-23 years old");
        cbBtn2= new JCheckBox("+23 years old");
     
        t1=new JTextField();
        b = new JButton("ok");
        contentPane.add(label1);
        contentPane.add(label2);
        contentPane.add(label3);
        contentPane.add(cbBtn);
        contentPane.add(cbBtn1);
        contentPane.add(cbBtn2);
        if (cbBtn.isSelected()) 
        {
       System.out.println("You age is"+ cbBtn.getText());
        } 
     
     
        	//else{
        	//	System.out.println("You age is "+ cbBtn2.getText ());
     
        	//}
        //}
     
     
        String[] comboBoxItem= {"Woman", "Man"};
        JComboBox comboBox = new JComboBox(comboBoxItem);
        contentPane.add(comboBox);
     
        //String selection = (String) comboBox.getSelectedItem();
        //System.out.println(selection);
     
        t1.setPreferredSize( new Dimension( 200, 24) );
         br1 = new JRadioButton("un",true);
         br2 = new JRadioButton("deux");
         br3 = new JRadioButton("trois");
        // ajout des boutons radio dans le groupe bg
           languageGroup.add(br1);
           languageGroup.add(br2);
           languageGroup.add(br3);
        contentPane.add(t1);
        contentPane.add(b);
        contentPane.add(br1);
        contentPane.add(br2);
        contentPane.add(br3);
     
        if (br1.isSelected()){
        	System.out.println("AAAAAAAAA");
        }
     
        br1.addActionListener(this);
        br2.addActionListener(this);
        br3.addActionListener(this);
     
        b.addActionListener(this);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
     
     
    }
     
    public void actionPerformed(ActionEvent e)
    {
     
    	initTimer();
    }
     
    }


    Bonne soirée !

  10. #10
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 212
    Points : 23
    Points
    23
    Par défaut
    ok merci je veux voir donc Timer est plus facile que le thread

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2010, 18h17
  2. JCheckBox et JRadioButton multiligne
    Par Polux000 dans le forum Composants
    Réponses: 2
    Dernier message: 18/08/2009, 01h42
  3. Evenement sur un JCheckBox pour afficher un objet.
    Par dad72 dans le forum Composants
    Réponses: 9
    Dernier message: 04/03/2008, 11h38
  4. Réponses: 3
    Dernier message: 24/04/2007, 19h45
  5. [jCheckBox] Probleme avec isSelected()
    Par niuniuk36 dans le forum Composants
    Réponses: 10
    Dernier message: 11/03/2005, 09h26

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