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

Composants Java Discussion :

[JTabbedPane] Double clic pour fermer un onglet


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut [JTabbedPane] Double clic pour fermer un onglet
    Bonjour,

    J'utilise un JTabbedPane avec des onglets que je veux pouvoir fermer.

    Pour l'instant, je le fais avec une classe implémentant Icon qui dessine une croix dont il mémorise la position, et avec un MouseAdapter sur le JTabbedPane qui vérifie si un click est fait sur cet Icon.

    J'aimerais pouvoir aussi autoriser la fermeture quand on double clique sur le titre de l'onglet, mais je ne sais pas comment savoir si un clic est sur le titre d'un onglet. Quelqu'un aurait une idée ?

    Merci
    Nico

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    J'ai fait quelques essais avec les TabComponent introduits avec Java 6 et le résultat est plutôt mitigé.
    J'ai créé mon propre composant pour le TabComponent sur lequel je mets un MouseListener qui récupère les clics souris et les traite : j'arrive bien à récupérer le double-clic et à fermer l'onglet, mais par contre les simples clics ne marchent plus pour le changement d'onglet. Comment puis-je faire pour repasser proprement l'évènement au JTabbedPane pour que les actions classiques continuent à marcher ?

    Merci

  3. #3
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Il existe un JTabbedPane avec la possibilité de fermeture (avec un bouton). La classe s'appelle JXTabbedPane.

    Si cela peux t'aider...

  4. #4
    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,


    Il te suffit de gérer cela toi même via un setSelectedIndex() lors d'un simple clic...

    a++

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudes Recherches et Prototypes
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudes Recherches et Prototypes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    Bonsoir,
    Voici un bout de code qui fait le boulot, il réalise l'échange entre un JLabel (renderer) et un JTextField (editor).
    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
     
       @Override
       public void propertyChange( PropertyChangeEvent evt )
       {
          _projects.removeAll();
          int i = 0;
          for( final Project project : _model.getProjects())
          {
             _projects.addTab( project.getName(), new ProjectPanel( _model, project ));
             if( i > 0 )
             {
                final int    index = i;
                final JLabel label = new JLabel( project.getName());
                _projects.setTabComponentAt( index, label );
                label.addMouseListener( new MouseAdapter(){
                   @Override public void mouseClicked( MouseEvent e ){
                      if( e.getClickCount() < 2 )
                      {
                         _projects.setSelectedIndex( index );
                      }
                      else
                      {
                         final JTextField editor = new JTextField( project.getName());
                         editor.addActionListener( new ActionListener(){
                            @Override public void actionPerformed( ActionEvent ae ){
                               label  .setText( editor.getText());
                               project.setName( editor.getText());
                               _projects.setTabComponentAt( index, label );
                            }});
                         _projects.setTabComponentAt( index, editor );
                         editor.requestFocus();
                         editor.addFocusListener( new FocusListener(){
                            @Override public void focusLost( FocusEvent ae ){
                               _projects.setTabComponentAt( index, label );
                            }
                            @Override public void focusGained( FocusEvent ae ){/**/}
                         });
                      }// if
                   }});
             }// if
             ++i;
          }// for
       }// void propertyChange( PropertyChangeEvent evt )
    Seul les onglets dont l'index > 0 sont éditables.
    La méthode "propertyChange" est invoquée quand le modèle associé aux vues change.
    En espérant que cela soit utile...

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/02/2011, 23h58
  2. visualiser un PDF : double clic pour ouvrir le fichier
    Par ETL68350 dans le forum Access
    Réponses: 2
    Dernier message: 07/04/2010, 13h28
  3. double clic pour meme bouton
    Par hraiwen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/04/2009, 19h12
  4. Double clic pour actionner un lien
    Par Byrdsmann dans le forum Flash
    Réponses: 3
    Dernier message: 25/04/2007, 11h40
  5. double clic pour activer mon SWF sous IE
    Par raldine dans le forum Flash
    Réponses: 1
    Dernier message: 15/02/2007, 13h26

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