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 :

[JinternalFrame]évenement souris quand clic sur la barre de titre


Sujet :

AWT/Swing Java

  1. #1
    Membre actif Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Points : 227
    Points
    227
    Par défaut [JinternalFrame]évenement souris quand clic sur la barre de titre
    Bonjour,

    J'aimerais personaliser mes JInternalFrame en ajoutant des "boutons" dans la barre de titre.

    Pour l'instant la meilleur manière que j'ai trouvé est de surcharger la méthode paint() de mes JInteralFrames afin de dessiner un "bouton".

    Par contre, je cherche depuis un moment et je ne parviens pas à trouver l'évenement lancé lorsque je clic sur la barre de titre . Le seul évenement que j'arrive à récupérer lorsque je clic sur la barre de titre est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void beginDraggingFrame(JComponent f)
    {
            super.beginDraggingFrame(f);
     
    }
    (Situé dans la classe DefaultDesktopManager dont le JDestopPane possède une instance).

    Le problème c'est que cet évenement n'est pas du tout un MouseEvent qui pourrait me donner la position de la souris, le(s) bouton(s) cliqué(s) ...

    Je pourrais récupérer la postion de la souris en calculant la postion sur l'écran - la postion du desktoppane - la postion de l'internalFrame + la postion du bouton mais c'est quelque peut ... bourrin

    Quelqu'un sait m'aider ?

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    As tu essayé d'utiliser le RootPane de la JInternalFrame ? La barre de titre est dessinée par le RootPane (ou un de ses composants).

  3. #3
    Membre actif Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Points : 227
    Points
    227
    Par défaut
    J'ai trouvé quelques info supplémentaires.
    Apparament pour faire ça proprement ca donnerait un truc dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    internalFrame.setUI(new MyInternalFrameUI());
    Donc redéfinir un UI .

    Par contre j'ai réussi a catcher ce fichu MouseEvent de clic sur la barre de titre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            BasicInternalFrameUI ui = (BasicInternalFrameUI)this.getUI();
            ui.getNorthPane().addMouseListener(this);
    this = ma JInternalFrame.

    Je pense que je vais me contenter de ca.

  4. #4
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    oh mince ! Je pensais que ce code serait dans BasicRootPaneUI ... Au temps pour moi alors.

    Tu peux alors surcharger la méthode getNorthPane() de l'UI de ton LnF pour y ajouter un bouton, si tu le souhaites.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Bonjour
    Ha!!! des connaisseurs !
    Je voudrais savoir comment on interdit le déplacement d'une JInternalFrame ? ou autrement enlever la barre de titre.
    Pouvez-vous me donner un coup de main svp
    Merci d'avance

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Bonsoir untipy,

    pour intredire le déplacement je ne sais pas trop, mais pour retirer la barre de titre tu peux peut-être t'aider du model de Lethal, en notifiant null le NorthPane.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BasicInternalFrameUI ui = (BasicInternalFrameUI)internalFrame1.getUI();
      ui.setNorthPane(null);
    Voilou. En espérant t'avoir aidé.

  7. #7
    Membre actif Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Points : 227
    Points
    227
    Par défaut
    Citation Envoyé par untipy
    Bonjour
    Ha!!! des connaisseurs !
    Je voudrais savoir comment on interdit le déplacement d'une JInternalFrame ? ou autrement enlever la barre de titre.
    Pouvez-vous me donner un coup de main svp
    Merci d'avance
    C'est le DesktopManager qui gère ca. Il suffit de créer une classe qui extends DefaultDesktopManager, de surcharger les méthodes dragFrame et resizeFrame et de ne rien faire dedans.

    En code ca donne ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            jDesktopPane1.setDesktopManager(new DefaultDesktopManager()
            {
                public void dragFrame(JComponent f, int newX, int newY)
                {
                }
                public void resizeFrame(JComponent f, int newX, int newY, int newWidth, int newHeight)
                {
                }
            });

  8. #8
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    une JInternalFrame est un simple composant (extends JComponent).
    si tu veux pas qu'elle a une barre de titre ou qu'elle se deplace alors pourquoi pas utiliser un JPanel a la place?
    la methode add d'un JDesktopPane prend un JComponent en parametre et pas JInternalFrame alors tu peux ajouter ce que tu veux :-)

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/12/2010, 22h01
  2. Souris sur la barre de titre
    Par Nico28 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/11/2008, 09h55
  3. Clic droit sur la barre de titre
    Par eighty_three dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 15/05/2008, 19h33
  4. Réponses: 2
    Dernier message: 09/02/2007, 09h37
  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