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]JDesktopPane et JToolBar, problèmes de cohabitatio


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de lejimi
    Homme Profil pro
    Écrivain public
    Inscrit en
    Mai 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Écrivain public
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2004
    Messages : 182
    Billets dans le blog
    2
    Par défaut [débutant]JDesktopPane et JToolBar, problèmes de cohabitatio
    Bonjour,

    je code une application qui utilise un JDesktopPane pour afficher des JInternalFrame. Je souhaite lui ajouter une JToolBar, mais si je fais desktop.add(toolbar) , la barre d'outil n'apparait pas.

    Par contre, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Container c=getContentPane();
    c.add(toolbar,"North");
    c.add(desktop,"South");
    C'est mon JDeskTopPane qui ne s'affiche pas (vérifié avec un setBackground)

    Dans un cas comme dans l'autre, je n'arrive pas à voir ce qui cloche, d'autant que les exemples que j'ai pu trouver sur le forum fonctionnent soit d'une façon soit de l'autre... mais ils fonctionnent !

    Tchô !

    S.

    Deux exemple un peu plus complets... Qu'est-ce que j'oublie, qui est forcément évident ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class ÊssaisDesktop {
     
        public static void main(String[] args) {
            JFrame maFrame=new JFrame("Essai desktop");
            JDesktopPane desktop=new JDesktopPane();
            JToolBar toolbar=new JToolBar();
            toolbar.add(new JButton("Prout !!!"));
            desktop.setBackground(Color.yellow);
            desktop.add(toolbar);
            maFrame.setContentPane(desktop);
            maFrame.setSize(new Dimension(800,600));
            maFrame.setVisible(true);
        }
    }

    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
    public class EssaiDesktop2 {
     
        public static void main(String[] args) {
            JFrame frame=new JFrame("Essais Desktop");
            Container cont=frame.getContentPane();
            JToolBar toolbar=new JToolBar();
            toolbar.add(new JButton("Essais !!!"));
            JDesktopPane desktop=new JDesktopPane();
            desktop.setBackground(Color.yellow);
            cont.add(toolbar,BorderLayout.NORTH);
            cont.add(desktop,BorderLayout.SOUTH);
            frame.setSize(new Dimension(800,600));
            frame.setVisible(true);
        }
    }
    Gloire à qui n'ayant pas d'idéal sacro-saint
    Se borne à ne pas trop emmerder ses voisins.


    Mon tutoriel pour débuter avec Inkscape
    D'autres tutoriels intéressants dans la rubrique Open Source
    Et n'oubliez pas la FAQ Open Source !

  2. #2
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Essaye d'ajouter cette 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
    public class EssaiDesktop2 {
     
        public static void main(String[] args) {
            JFrame frame=new JFrame("Essais Desktop");
            Container cont=frame.getContentPane();
            cont.setLayout(new BorderLayout());// ajout de cette ligne
            JToolBar toolbar=new JToolBar();
            toolbar.add(new JButton("Essais !!!"));
            JDesktopPane desktop=new JDesktopPane();
            desktop.setBackground(Color.yellow);
            cont.add(toolbar,BorderLayout.NORTH);
            cont.add(desktop,BorderLayout.SOUTH);
            frame.setSize(new Dimension(800,600));
            frame.setVisible(true);
        }
    }

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    @aDamas >> Par défaut le Layout du contentPane des JFrame est déjà un BorderLayout...

    @lejimi >> Le JDesktopPane est un composant qui n'a pas de "PreferedSize", et comme tu l'ajoute en bas de ton BorderLayout, il prend un minimum d'espace donc tu ne le vois pas...

    En général le JDesktopPane est inséré au centre du BorderLayout (le composant au centre prend tout l'espace qui reste), donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cont.add(desktop,BorderLayout.CENTER);
    Voir même ceci puisque c'est la "position" par défaut :
    a++

  4. #4
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Et nouveauté de java 5, on peut mème faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    frame.add(desktop);
    8)


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Membre expérimenté
    Avatar de lejimi
    Homme Profil pro
    Écrivain public
    Inscrit en
    Mai 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Écrivain public
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2004
    Messages : 182
    Billets dans le blog
    2
    Par défaut
    Oui ! C'est bien une question de layout. Ajouter la barre d'outils au JDesktopPane, ce n'est pas terrible, car dans les essais que j'ai faits, ce dernier gère ensuite n'importe comment la taille des JInternalFrame... DeskopPane().getLayout() me renvoie null par défaut...

    J'ai donc fini par mettre la barre d'outil et mon desktop dans un JPanel auquel j'ai affecté un BoxLayout. J'affecte l'ensemble à ma fenêtre principale en tant que ContentPane et ça marche au poil.

    Même si mon souci était réglé avant que je ne lise vos réponses, je vous remercie beaucoup, car elles contiennent des infos utiles que je ne connaissait pas (comme le fait qu'un composant ait une place par défaut dans un Layout) Comme quoi, même trop tard, c'est mieux que jamais


    Salut,

    LJM
    Gloire à qui n'ayant pas d'idéal sacro-saint
    Se borne à ne pas trop emmerder ses voisins.


    Mon tutoriel pour débuter avec Inkscape
    D'autres tutoriels intéressants dans la rubrique Open Source
    Et n'oubliez pas la FAQ Open Source !

  6. #6
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Citation Envoyé par adiGuba
    @aDamas >> Par défaut le Layout du contentPane des JFrame est déjà un BorderLayout...
    C'est pas plutôt un FlowLayout?

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par aDamas
    Citation Envoyé par adiGuba
    @aDamas >> Par défaut le Layout du contentPane des JFrame est déjà un BorderLayout...
    C'est pas plutôt un FlowLayout?
    Non c'est bien un BorderLayout :
    Citation Envoyé par [url=http://javasearch.developpez.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html
    JFrame[/url]]The default content pane will have a BorderLayout manager set on it.

    Par contre c'est vrai que le FlowLayout est utilisé par défaut sur les JPanel :
    Citation Envoyé par [url=http://javasearch.developpez.com/j2se/1.4.2/docs/api/javax/swing/JPanel.html
    JPanel[/url]]Creates a new JPanel with a double buffer and a flow layout.
    a++

  8. #8
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Tiens, ouai, merci pour l'info.

  9. #9
    Membre expérimenté
    Avatar de lejimi
    Homme Profil pro
    Écrivain public
    Inscrit en
    Mai 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Écrivain public
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2004
    Messages : 182
    Billets dans le blog
    2
    Par défaut
    Eh les gars ! Vous allez pas vous foutre sur la gueule non ? Si en plus vous saviez que mon appli ne sert foutrement à rien...
    Gloire à qui n'ayant pas d'idéal sacro-saint
    Se borne à ne pas trop emmerder ses voisins.


    Mon tutoriel pour débuter avec Inkscape
    D'autres tutoriels intéressants dans la rubrique Open Source
    Et n'oubliez pas la FAQ Open Source !

  10. #10
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    J'avais pas l'intention d'en venir aux mains, je suis juste content d'avoir appris qqch, et j'en remercie adiGuba.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/05/2008, 22h05
  2. Réponses: 2
    Dernier message: 11/09/2007, 17h03
  3. Réponses: 7
    Dernier message: 24/08/2007, 09h38
  4. [Débutant] J'ai un problème avec la compilation des classes
    Par Paulinho dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/11/2005, 14h23
  5. Débutant et déjà des problèmes
    Par FUJi dans le forum C
    Réponses: 18
    Dernier message: 10/11/2005, 21h11

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