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 :

[INTERFACE GRAPHIQUE] Bouton et CheckBox


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut [INTERFACE GRAPHIQUE] Bouton et CheckBox
    Bonjour à tous,

    J'ai créé une JFrame avec 2 JPanel à l'intérieur.
    Un JPanel contenant un bouton:

    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 GenButton extends JPanel implements ActionListener{
     
    	GenButton()	{
    		JPanel buttonPanel = new JPanel();
    		JButton genButton = new JButton("Generate File");
    		genButton.addActionListener(this);
    		buttonPanel.add(genButton);
    		add(buttonPanel);
    	}
     
    	public void actionPerformed(ActionEvent e){
    	}
    }
    et un JPanel contenant des CheckBoxes que j'incrémente dynamiquement:

    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
     
    class CheckBoxes extends JPanel	{
     
    	int nbFiles;
    	JCheckBox checkBox = new JCheckBox();
     
    	CheckBoxes()	{
    		CountFiles();
    		JPanel checkboxPanel =  new JPanel();
    		checkboxPanel.setLayout(new GridLayout(nbFiles, 1));
    		for (int j=0; j<SearchFiles().length; j++)	{
    			checkBox = new JCheckBox(SearchFiles()[j], false);
    			checkboxPanel.add(checkBox);
    		}
    		add(checkboxPanel);
    	}
     
    	public void CountFiles()	{
     
    		FileFilter fileFilter = new FileFilter() {
                public boolean accept(File file) {
                	String nameFile = file.getName();
                	return nameFile.endsWith(".txt");
                }
    		};
     
    		File source = new File("C:\Work");
    		File[] dirContent = source.listFiles(fileFilter);	//browse the source folder
    		nbFiles = dirContent.length;
    	}
     
     
    	public String[] SearchFiles()	{
     
    		FileFilter fileFilter = new FileFilter() {
                public boolean accept(File file) {
                	String nameFile = file.getName();
                	return nameFile.endsWith(".txt");
                }
    		};
     
    		String modele = "^(\\w{3}).*";
    		Pattern pattern = Pattern.compile(modele);
    		File source = new File("C:\Work");
    		File[] dirContent = source.listFiles(fileFilter);	//browse the source folder
    		File f = null;
    		String[] result = new String[dirContent.length];
    		for (int i=0; i<dirContent.length; i++) {
    			f = dirContent[i];
     
    			Matcher matcher = pattern.matcher(f.getName());
    			if (matcher.matches()){
    				result[i] = matcher.group(1);
    			}
    		}
    		return result;
    	}
    et voilà le main:

    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
     
    public static void main(String[] argv)	{
     
    		JFrame frame = new JFrame("Test");
     
    		JPanel buttonPanel = new GenButton();
    		JScrollPane scrollPane = new JScrollPane(new CheckBoxes());
     
    		JPanel mainPanel = new JPanel();
    		mainPanel.setLayout(new GridLayout());
     
    		mainPanel.add(buttonPanel);
    	    mainPanel.add(scrollPane);
     
    	    frame.getContentPane().add(mainPanel);
    	    frame.setSize(200,500);
    	    frame.setLocationRelativeTo(frame.getParent());
    	    frame.setVisible(true);
    	    frame.addWindowListener(new WindowAdapter()
    	    		{
    			    	public void windowClosing(WindowEvent evt)
    			        {
    			    		System.exit(0);
    				     }
    				 });
    	 }
    Ce que je veux faire maintenant c'est de sélectionner des checkbox et que lorsque je clique sur le bouton il écrive dans un fichier les checkbox sélectionnées. Mais à part l'écriture dasn le fichier je ne sais pas comment récupérer les Checkbox cochées.
    Quelqu'un aurait une idée.
    Merci par avance.

  2. #2
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Tu peux utiliser la méthode isSelected pour savoir si une combo est sélectionnée...

    Tu testes tes combos et ainsi tu sais lesquelles sont sélectionnées...
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Hello,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(myCheckBox.isSelected())
      write(myCheckBox);


    [Edit] grilled de 21 secondes
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  4. #4
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    Le problème dans la solution que vous prposez et que si vous regardez mon code toutes les checkbox générées ont le même nom.
    Donc votre solution ne marchera à priori que pour la dernière checkbox.

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Fait un tableau de JCheckBox pour garder une référence sur chaque.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  6. #6
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    ou alors tu récupère la liste des checkbox avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    checkboxPanel.getComponents()
    (qui vient de 'Container')[/code]
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  7. #7
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    J'ai fait un truc comme ça sur les conseils de Spoutnik:
    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)	{
    		try	{
    		CheckBoxes checkbox = new CheckBoxes();	
    		Component[] CheckBoxRecup = checkbox.checkboxPanel.getComponents();
    		PrintWriter output = new PrintWriter(new FileWriter("C:\\Work\\test.txt")); //Output file
    		for (int i=0; i<CheckBoxRecup.getComponentCount(); i++)	{
    			if (CheckBoxRecup[i].)	{
    				output.println("ok");
    			}
    		}
    		output.close();
    		}	catch (IOException q)	{
    			q.getMessage();
    		}
    	}

    Mais dans mon if je ne sais pas comment faire pour lui dire de vérifier si ma checkbox est cochée ou pas.

  8. #8
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ( (CheckBoxRecup[i] instanceof JCheckBox) && 
        ((JCheckBox) CheckBoxRecup[i]).isSelected() ) ...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  9. #9
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    J'préfère quand même le tableau de JCheckBox moi...
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  10. #10
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    Ca ne marche pas pour lui rien n'est sélectionné.
    voici mon code:
    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)	{
    		try	{
    		CheckBoxes checkbox = new CheckBoxes();	
    		Component[] CheckBoxRecup = checkbox.checkboxPanel.getComponents();
    		PrintWriter output = new PrintWriter(new FileWriter("C:\\Work\\test.txt")); //Output file
    		for (int i=0; i<CheckBoxRecup.length; i++)	{
    			if ((CheckBoxRecup[i] instanceof JCheckBox) && ((JCheckBox) CheckBoxRecup[i]).isSelected())	{
    				output.println("ok");
    			}
    		}
    		output.close();
    		}	catch (IOException q)	{
    			q.getMessage();
    		}
    	}
    Merci

  11. #11
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par natha
    J'préfère quand même le tableau de JCheckBox moi...
    moi je préfère une variable par check box (si y'en a pas 1'000'000)

    comment identifier facilement de quelle check box il s'agit sinon ? je trouve la notation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    checkBoxes[i].isSelected()
    vraiment pas claire...

    c'est beaucoup mieux avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maCheckBoxQuiSertAActiverLeDoubleBufferingDeMonAppli.isSelected();
    (bon évidemment c'est un peu exagéré là...)




    EDIT: à quoi te sert cette ligne ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheckBoxes checkbox = new CheckBoxes();
    c'est là que ça bug d'après moi
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  12. #12
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Pill_S
    moi je préfère une variable par check box (si y'en a pas 1'000'000)
    Tout à fait. En fait j'ai jamais fait de tableaux de composants comme ça, faut voir le cas, si c'est dynamique c'est mieux un tableau Et là en l'occurence, ça m'a tout l'air dynamique !
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  13. #13
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    Je n'ai pas de problème particulier pour faire cela avec un tableau ou bien en donnant un nom différent à chaque variable.
    Mais si tu regardes mon code dansle premier post comment veux tu que je donne un nom différents à chaque checkbox alors que je les génère dynamiquement ?
    En même temps je suis un peu limité en java

    sinon
    CheckBoxes checkbox = new CheckBoxes();
    sert à aller chercher le Jpanel qui contient toutes les checkBox.

  14. #14
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Hoegaarden
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheckBoxes checkbox = new CheckBoxes();
    sert à aller chercher le Jpanel qui contient toutes les checkBox.
    Oula d'accord... tu risques pas de les voir, tes JCheckBox cochées si tu crée une nouvelle instance de ton panel...
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  15. #15
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    ok d'accord comment faire alors ?

  16. #16
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par Hoegaarden
    Mais si tu regardes mon code dansle premier post comment veux tu que je donne un nom différents à chaque checkbox alors que je les génère dynamiquement ?
    en même temps, je l'ai pas lu ton code, beaucoup trop gros pour la question qui en découlait..... c'était un principe général que j'expliquais

    mais bon, après lecture, je peux déjà dire qu'il faut que tu garde une référence sur l'instance de CheckBoxes que tu met dans le scrollPane, puisque c'est cette instance là qui te permet de récupérer les check box

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private CheckBoxes checkBoxes = new CheckBoxes();
    ...
    JScrollPane scrollPane = new JScrollPane(checkBoxes ); 
    ...
    Component[] CheckBoxRecup = checkBoxes.checkboxPanel.getComponents();
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  17. #17
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut Re: [INTERFACE GRAPHIQUE] Bouton et CheckBox
    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
     
    class CheckBoxes extends JPanel	{
    	int nbFiles;
    	JCheckBox checkBox = new JCheckBox();
     
    	CheckBoxes()	{
    		CountFiles();
    		JPanel checkboxPanel =  new JPanel();
    		checkboxPanel.setLayout(new GridLayout(nbFiles, 1));
    		for (int j=0; j<SearchFiles().length; j++)	{
    			checkBox = new JCheckBox(SearchFiles()[j], false);
    			checkboxPanel.add(checkBox);
    		}
    		add(checkboxPanel);
    	}
    Tu crée une classe qui dérive de JPanel, puis dans le constructeur, tu y ajoute un panel ( add(checkboxPanel); ) et dans ce panel, tu as la checkbox . Ca fait au moins un panel en trop (a priori en ts cas).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class CheckBoxes extends JPanel	{
    	int nbFiles;
     
    	CheckBoxes()	{
    		CountFiles();
                    super().setLayout(new GridLayout(nbFiles, 1));
    		for (int j=0; j<SearchFiles().length; j++)	{
    			this.add(new JCheckBox(SearchFiles()[j], false));
    		}
    	}
    idem dans le main, le "mainPanel" me semble inutile.

    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
     
    public static void main(String[] argv)	{
     
    		JFrame frame = new JFrame("Test");
     
    		JPanel buttonPanel = new GenButton();
                    CheckBoxes checkBoxesPanel = new CheckBoxes();
    		JScrollPane scrollPane = new JScrollPane(checkBoxesPanel);
     
    		frame.getContentPane().setLayout(new GridLayout());
     
     
    	        frame.getContentPane().add(buttonPanel);
                    frame.getContentPane().add(scrollPane);
    	        frame.setSize(200,500);
    	        frame.setLocationRelativeTo(frame.getParent());
    	        frame.setVisible(true);
    	        frame.addWindowListener(new WindowAdapter()
    	    		{
    			    	public void windowClosing(WindowEvent evt)
    			        {
    			    		System.exit(0);
    				     }
    				 });
    	 }
    Code non compilé
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

Discussions similaires

  1. [Débutant] Paramétrer une interface graphique avec des checkboxs
    Par Invité dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 03/07/2014, 12h17
  2. [Débutant] Création interface graphique, bouton poussoir
    Par celtic29 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 20/04/2012, 10h19
  3. Interface graphique et clic de bouton
    Par Tsukaasa dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 12/09/2008, 16h13
  4. Bouton d'interface graphique bloqué
    Par levalp dans le forum Windows Forms
    Réponses: 26
    Dernier message: 07/02/2008, 09h43
  5. interface graphique avec bouton parcourir
    Par Wael Maaoui dans le forum Tkinter
    Réponses: 2
    Dernier message: 26/03/2007, 12h00

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