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 :

[débutant] Tableau de JToggleButton


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Par défaut [débutant] Tableau de JToggleButton
    Bonjour,

    j'aimerai savoir si il est possible de créer un tableau de JToggleButton de ce type: avec la prise en charge du GridBagLayout et aussi la possibilité d'utiliser le nom d'un/des jToggleButton activé, comme valeur?

    J'ai bien essayé avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        private JPanel getContainer() {
            JPanel container = new JPanel();
    	GridBagLayout thisLayout = new GridBagLayout();
    	setLayout(thisLayout);
    	int j =9;
            for (int i=0;i<j;i++){
            JToggleButton jb_essai[] = new JToggleButton[j];
        	String s = String.valueOf(i+1);
        	jb_essai[i] = new JToggleButton(s);
                    container.add(jb_essai[i], new GBC(0,i+1).setInsets(2)); // GBC(gridx,gridy)
            }
    	return container;
        }
    mais je ne sais pas reprendre les noms pour valeurs et ma config du GridBagLayout ne s'applique pas au tableau de bouton ( elle fonctionne bien sur mon interface )

    Merci.

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Salut,

    pourrais tu etre un peux plus clair sur ce qui ne fonctionne pas ??? car je ne vois pas exactement ou se situe ton problème ...

    ++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Par défaut
    bonjour,
    la conception du tableau en lui même fonctionne, mais c'est ça mon problème:

    je ne sais pas reprendre les noms pour valeurs et ma config du GridBagLayout ne s'applique pas au tableau de bouton
    pour ce qui est des valeurs, c'est plus un problème de code que d'interface, j'aimerai récupérer sur une seule et même ligne toutes les valeurs des boutton activés. Mais je ne sais pas trop comment m'y prendre

    ensuite mon GridBagLayout n'applique pas mes boutton sur un même colone avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    container.add(jb_essai[i], new GBC(0,i+1).setInsets(2)); // GBC(gridx,gridy)
    mais avec tt les autres composants cette méthode fonctionne.

    Merci pour votre aide.

  4. #4
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut
    bonjour,

    Pour commencer : je ferais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    container.setLayout(...);
    //au lieu de 
    //setLayout(...)
    Parce que si je ne me trompe pas, dans ton code, le GridBagLayout est appliqué au parent de ton "container".

    Ensuite l'initialisation de ton tableau de Toggle; je le ferais avant de parcourir la boucle for ... je ne sais pas ce que sa donne de réinitialiser ton tableau à chaque itération de i.

    Bonne journée !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Par défaut
    Merci ça fonctionne pour le GridBaglayout.

    Mais maintenant je suis bloqué pour les positionner

    voici mon code actuel

    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
        private JToggleButton jb_essai[] = new JToggleButton[15];
     
        private JPanel getContainer() {
    	GridBagLayout thisLayout = new GridBagLayout();
            JPanel container = new JPanel();
    	container.setLayout(thisLayout);
    	int j=15;
            for (int i=0;i<j;i++){
        	String s = String.valueOf(i+1);
        	container.add(jb_essai[i]= new JToggleButton(s),  new GBC(0,i+1)); // actuellement tt s'affiche sur un même colone.
            setHauteur(jb_essai[i], 25);
     
            }
    	return container;
        }
    actuellement tout s'affiche sur une même colone, mais j'aimerai que tout les 15 boutons il y a un changement de colone, est-ce possible?

    Il reste encore la récupération de valeurs, j'ai testé de les récupérer avec un bouton, je récupére bien les valeurs des Boutons activé mais je ne sais pas les formater sur une seule ligne ^^

    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
        private JButton getOk() {
    	if (Ok == null) {
    	    Ok = new JButton();
    	    Ok.setText("OK");
    	    Ok.addActionListener(new ActionListener() {
    		public void actionPerformed(ActionEvent e) {
    		        for (int i=0;i<15;i++){
    	                if (jb_essai[i].isSelected())
    	                    System.out.println(jb_essai[i].getText());
    		        }
    		}
     
    	    });
    	}
    	return Ok;
        }
    merci

  6. #6
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut
    Voilà un exemple qui semble faire ce que tu souhaite.
    Le code n'est probablement optimum : y'a toujours mieux à faire !
    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
     
    import java.awt.*; import java.awt.event.*; 
    import javax.swing.*;
    public class Frame2 extends JFrame
    {
      private JToggleButton jb_essai[] = new JToggleButton[15];
     
      JButton pressme = new JButton("Press Me");
      Frame2()        // the frame constructor
      {
        super("Toggle boutons");
        setBounds(100,100,300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container con = this.getContentPane();
        JPanel pane = getContainer();
        con.add(pane);    
        setVisible(true);
      }
     
      class ToggleAction implements ActionListener
      {
        private JToggleButton jb_essai[];
        public ToggleAction(JToggleButton a_jb_essai[])
        {
          jb_essai = a_jb_essai;
        }
        public void actionPerformed(ActionEvent e)
        {
          String etatBoutons = "";
          int size = jb_essai.length;
          for(int i=0;i<size;i++)
          {
            String tmp = "Bouton "+i+" : ";
            if(jb_essai[i].isSelected()==true)
            {
              tmp+="enfonce";
            }
            else
            {
              tmp+="relache";
            }
            tmp+="\n";
            etatBoutons +=tmp; 
          }
          System.out.println(etatBoutons+"\n---------");
        }
     
      }
      private JPanel getContainer() 
      {
        //15 lignes 2 colonnes
        GridLayout thisLayout = new GridLayout(15,2);
        JPanel container = new JPanel();
        ToggleAction tga = new ToggleAction(jb_essai);
        container.setLayout(thisLayout);
        int j=15;
        for (int i=0;i<j;i++)
        {
          String s = String.valueOf(i+1);
     
          container.add(jb_essai[i]= new JToggleButton(s)); // actuellement tt s'affiche sur un même colone.
          jb_essai[i].addActionListener(tga);
     
        }
        return container;
      }
     
      public static void main(String[] args) {new Frame2();}
    }

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

Discussions similaires

  1. [VB.NET] [Débutant] : tableau ou liste?
    Par alx3d dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/05/2006, 08h58
  2. [Débutante] Tableau
    Par aziziti dans le forum MFC
    Réponses: 6
    Dernier message: 27/04/2006, 13h24
  3. [débutant] Tableau associatif
    Par sempire dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 05/09/2005, 11h30
  4. [HTML] [Débutant] Tableau et images
    Par skandas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/06/2005, 01h01
  5. [Débutant]tableau de formulaire
    Par minique dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/10/2004, 13h57

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