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

Agents de placement/Fenêtres Java Discussion :

[SWING] Comment redessiner la barre de titre d'une JFrame?


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut [SWING] Comment redessiner la barre de titre d'une JFrame?
    Bonjour à tous!

    Voilà, tout est en dans le titre mais je vais vous expliquer ce que je veux faire exactement!

    J'ai choisi de modifier l'apparence d'une de mes interfaces graphiques et je souhaiterais pour cale redessiner les contours d'une JFrame! J'ai donc utilisé la méthode setUndecorated(true) et je voudrais maintenant redessiner la barre de titre notamment en mettant par exemple une nouvelle couleur et également insérer un logo de la taille que je souhaite!

    Comment dois-je procéder pour arriver à cela? Modifier la méthode paintComponent en créant une nouvelle classe qui étend la classe JFrame? Dessiner directement ma barre dans photoshop (par exemple) et l'incorporé à mon interface ensuite?

    Si quelqu'un a une idée, je suis bien entendu preneur!

    Merci et bon après-midi à tous...

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Un idée serait de définir un composant qui te servirait de header (enfin de barre des titres). Tu partiras sur une base de JPanel, et en redéfinissant la méthode¨paintComponent y dessiner ce que tu veux (images, textures...) puis d'ajouter dessus tes boutons perso
    Ensuite il te suffira d'insérer ce JPanel au bon endroit dans ta JFrame

    Accessoirement la JFrame n'étendant la JComponent, il elle ne possède pas la méthode paintComponent...

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut
    d'accord, je vois ce que tu veux dire mais est-ce possible d'ajouter ce JPanel personnalisé tout en haut de mon appli, un peu comme une barre de titre? Pour information, mon appli possède un JMenuBar donc est-ce que je vais pouvoir ajouter mon JPanel personnalisé au dessus de ce JMenuBar?

    Si c'est possible, je veux bien une petite explication... merci d'avance!

  4. #4
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    sa serait pas un JToolbar que tu veux faire ?
    une petite recherche google dont voici le resultat

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut
    Non ce n'est pas du tout une JTooLBar que je veux faire... je veux tout simplement changer la barre bleue que tu trouves tout en haut (vraiment tout en haut!) de chaque appli Java afin de redessiner une barre rouge par exemple puisqu'il n'est pas possible de changer la couleur directement... tu vois ce que je veux dire ou pas?

  6. #6
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Une solution (un peu moche certe) serait de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    f.add(new JPanel(), BorderLayout.NORTH); // ton panel qui sert de barre de titre
    f.getContentPane().add(build(), BorderLayout.CENTER); // le contenu de ta frame
    Mais c'est en attendant l'avis des experts

  7. #7
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut
    Cela pourrait être une solution mais là comment vais-je faire pour gérer mon JMenuBar puisque quand on fait un setJMenuBar et bien le menu vient se loger tout naturellement tout en haut... de plus, j'utilise également une JToolBar donc ça rajoute un composant!

    Pour être plus complet, j'utilise un JMenuBar, un JToolBar et ensuite un JPanel en dessous de tout ça... je voudrais donc avoir une barre de titre rouge (par exemple) au dessus de tout ça... voilà, j'espère avoir été plu complet!

    Merci à tous et j'attends vos propositions!

  8. #8
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    J'avais zappé la JMenuBar... désolé, là il te faut des experts du fin fond de swing...

  9. #9
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Pourquoi tu n'utilises pas la solution de Gfx qu'il t'a donné dans ce post? Trop compliqué? Pas le temps d'apprendre à te servir de ce principe?

    Je vais essayer de l'utiliser dans les jours qui viennent, je te tiendrai au courant si j'arrive à faire ce que tu demandes...

  10. #10
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Enfin si tu veux vraiment modifier ça, il faut passer par un look and feel particulier ou Synth

  11. #11
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Sinon, pour affecter un tooltiptext sur le barre de titre d'une JInternalFrame, j'ai utilisé ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BasicInternalFrameUI ui = (BasicInternalFrameUI)getUI(); 
    ui.getNorthPane().setToolTipText(getTitle());
    Peut-être qu'il y a aussi moyen de récupérer le "NorthPane" d'une JFrame et de l'affecter avec un panel que tu auras créé toi-même...

    A approfondir (mais là, j'ai pas le temps... )

  12. #12
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par seiryujay
    Pourquoi tu n'utilises pas la solution de Gfx qu'il t'a donné dans ce post? Trop compliqué? Pas le temps d'apprendre à te servir de ce principe?

    Je vais essayer de l'utiliser dans les jours qui viennent, je te tiendrai au courant si j'arrive à faire ce que tu demandes...

    C'est pas que je ne veux pas utiliser sa solution mais il est vrai que ça me paraît assez compliqué d'un premier abord mais si j'avais un petit bout de code pour comprendre le principe, je pense que je pourrais me pencher dessus! Pour l'instant je ne vois pas trop par quoi commencer en fait...

  13. #13
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Tiens, j'ai trouvé ca mais ca revient à faire ce que gfx t'a dit (avec des exemples de code)

  14. #14
    Membre averti Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Points : 439
    Points
    439
    Par défaut
    et un truc du style ?

    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 class Fenetre extends JFrame {
     
        private JPanel contentPane = new JPanel(new BorderLayout());
     
     
        public Fenetre() {
     
            setUndecorated(true);
            setLayout(new BorderLayout());
     
            add(contentPane, BorderLayout.CENTER);
        }
     
        public Container getContentPane() {
            return contentPane;
        }
     
        public void setJMenuBar(JMenuBar menubar) {
            contentPane.add(menubar, BorderLayout.NORTH);
        }
     
        public void addBarTitre(JPanel p) {
            add(p, BorderLayout.NORTH);
        }
    }
    A utilisé à la place de JFrame...

  15. #15
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 55
    Points
    55
    Par défaut
    Merci beaucoup...

    Je ne me suis pas servi de ta solution mais disons qu'elle m'a tout simplement ouvert les yeux.
    Maintenant, je fais un setUndecorated(true), puis, je déclare un JPanel global qui a un BorderLayout. Dans la partie centre, je place mon "bureau" et dans la partie nord, je place une Box qui contient ma nouvelle barre de titre (un JPanel), mon JMenuBar et mon JToolBar...

    Encore merci...

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 08/03/2024, 14h44
  2. Texte de la barre de titre d'une Jframe sur deux lignes
    Par radzar dans le forum Agents de placement/Fenêtres
    Réponses: 17
    Dernier message: 01/09/2007, 01h10
  3. Réponses: 3
    Dernier message: 20/02/2007, 12h09
  4. Comment ajouter un bouton dans la barre de titre d'une fenêtre ?
    Par Interruption13h dans le forum C++Builder
    Réponses: 10
    Dernier message: 04/07/2006, 19h07
  5. Réponses: 7
    Dernier message: 27/06/2005, 22h05

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