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 :

Organisation d'une interface avec swing


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut Organisation d'une interface avec swing
    Bonjour à tous,
    je débute totalement en Java, et j'aimerai utiliser l'Interface graphique (Swing) pour avoir Un Jframe avec en haut un JmenuBar (jusqu'à la, aucun soucis, tout fonctionne bien)

    En dessous du Jmenu, il me faut Un Jpanel principal comprenant :
    - une grille GridLayout(10,22))
    - à coté de la grille 3 JButton alignés verticalement avec un FlowLayout.

    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 JPanel buildContentPanel2() {    
     
            JPanel panel = new JPanel (new GridLayout(10,22));
            Border blackline = BorderFactory.createLineBorder(Color.black,1);
     
            for(int i = 0; i<220;i++){
                JComponent ptest = new Case();
                ptest.setBorder(blackline);
                panel.add(ptest);
            }
            panel.setBorder(blackline);
            add(panel);
     
            return panel;
        }
    Non seulement je n'arrive pas a obtenir une grille de carré (ici ce sont des rectangles) et je ne vois pas comment insérer mes boutons à droites de cette grille.

    N'hésitez pas a me demander plus de précision si je ne suis pas assez clair

    Merci d'avance pour votre aide
    DoDo

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 149
    Points : 126
    Points
    126
    Par défaut
    Tes cases sont rectangulaires puisque tu n'as pas le même nombre de lignes que de colonnes et/ou ton panel n'est pas carré lui aussi.

    Si tu veux mettre des boutons sur le côté, il faudra soit utiliser un JTabbedPane (onglets) ou alors créer un second panel qui contiendra tes trois boutons avec un BoxLayout.PAGE_AXIS(). Tu insère ensuite ce panel avec BorderLayout.EAST après avoir ajouté ton panel principal avec BorderLayout.CENTER.

    Je n'ai peut-être pas été très clair non plus alors n'hésite pas à demander de plus amples informations!

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Bonjour, tout d'abord merci pour cette proposition de réponse JeremGamer...

    Pour ma grille , j'ai bien des cases carrées maintenant mais la grille est très petite ...
    Y'a-t-il un moyen pour agrandir ma grille :/

    J'ai un peu modifié le 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
    17
    18
    19
    20
     private JPanel buildContentPanel2() {
     
            JPanel panelPrincipal = new JPanel();
     
     
            JPanel panelGrille = new JPanel(new GridLayout(22, 10));
            JPanel panelBouton = new JPanel(new FlowLayout()); 
     
            Border blackline = BorderFactory.createLineBorder(Color.black, 1);
     
            for (int i = 0; i < 220; i++) {
                JComponent ptest = new Case();
                ptest.setBorder(blackline);
                panelGrille.add(ptest);
            }
            panelGrille.setBorder(blackline);
            panelPrincipal.add(panelGrille);
     
            return panelPrincipal;
        }
    Pour le reste effectivement je n'ai pas tout compris, mais à choisir je préfère utilisé un deuxième Jpanel .
    Mais je n'ai pas compris comment procéder .



    merci beaucoup
    Images attachées Images attachées  

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 149
    Points : 126
    Points
    126
    Par défaut
    Pour agrandir ta grille, deux solutions s'offrent à toi: réduire le nombre de cases ou augmenter la taille de ton panel.

    Voici le code du panel avec tes boutons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public JButton b1 = new JButton("bouton 1");
    public JButton b2 = new JButton("bouton 2");
    public JButton b3 = new JButton("bouton 3");
     
    JPanel panelBoutons = new JPanel();
     
    panelBoutons.setLayout(new BoxLayout(panelBoutons, BoxLayout.PAGE_AXIS));
    panelBoutons.add(b1);
    panelBoutons.add(b2);
    panelBoutons.add(b3);
    // Tu peux rajouter des espaces entre chaque bouton avec panelBoutons.add(Box.createRigidArea(new Dimension(width , height)));
    //Je te le conseille vivement pour un meilleur rendu.
    Normalement ton panel regroupe maintenant tes trois boutons. Ceux-ci seront alignés verticalement. (avec un espace si tu l'a défini, pense que ce n'est pas comme "inset" du GridBagLayout! Il faut remettre la commande chaque fois que tu veux un nouvel espace. Ou alors passer alternativement par une boucle for pour limiter les lignes.).

    Tu n'as plus qu'a faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    panelPrincipal.add(panelGrille, BorderLayout.CENTER);
    panelPrincipal.add(panelBoutons, BorderLayout.EAST);
    Pas besoin de définir le layout pour ton panel principal, il suffit de lui indiquer l'emplacement du composant lors de l'ajout (seulement pour le BorderLayout!)

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Merci

    Ca marche super bien

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/05/2011, 14h50
  2. bleme pour afficher une image avec swing
    Par uzumaki_naruto dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 22/02/2007, 00h47
  3. [Swing] Création d'une interface graphique SWING + MVC
    Par Sylmandel dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/04/2006, 09h03
  4. Piloter une interface avec des relais
    Par Yepazix dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 26/10/2004, 19h46
  5. Afficher une image avec swing
    Par arnonote dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 07/08/2004, 12h10

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