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 - Scroll button not removable apres removeAll()


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 43
    Par défaut JTabbedPane - Scroll button not removable apres removeAll()
    Bonjour,

    Je construit un MyTabbedPanede la maniere suivante (contenu constructeur d'une classe qui hérite directement de JTabbedPane:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MyTabbedPane{
    super(JTabbedPane.LEFT);
    setTabLayoutPolicy(SCROLL_TAB_LAYOUT);}
    Dans un écran, j'ai une table, qui selon la ligne selectionnée affiche un MyTabbedPane(de N onglets) de ce type.

    lorsque je change de ligne, je fais un myTabbedPane.removeAll() pour nettoyer mon ecran et reconstruire ensuite un MyTabbedPane avec la nouvelle selection de la table.

    Or, lorsque mon myTabbedPane comporte suffisamment d'onglet pour faire apparaitre les scroll buttons, mon removeAll() supprime bien les onglets mais ne supprime pas ces scroll buttons.


    Ce qui a pour effet de m'afficher un panel vide avec 2 scroll buttons dedans (haut et bas) au lieu d'un panel totalement vide.

    S'agit il d'un bug ou je fais qqch de mal ?

    J'utilise un workaround assez sale qui me leve une stack, mais qui a le mérite de faire un écran plus clean (plus de scroll button inutile).

    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    myTabbedPane.removeAll();
    myTabbedPane.revalidate();
    je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    myTabbedPane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
    myTabbedPane.removeAll();
     
    myTabbedPane.revalidate();  
    myTabbedPane.repaint();
    myTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
    Des idées ?

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    J'ai fait un test de ton code dans un JFrame.
    Tout fonctionne parfaitement ; le deux boutons disparaissent bien après un removeAll()
    sans qu'il soit besoin d'utiliser revalidate() ou repaint().

    Donc ton code est bon. Il est possible que cela soit
    un bête défaut de mise à jour dans l'affichage.

    Sachant que Swing utilise une "EventQueue" pour stocker les mises à jour de l'écran, il est parfois efficace de mettre la tâche en file d'attente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    myTabbedPane.removeAll();
                }
            });
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 43
    Par défaut
    Ok merci, mais je suis resté en WRAP layout policy finalement pour pas rester bloqué trop longtemps.

    Je le passe en résolu sans avoir testé ta solution, vu que tu me dis que ca marche

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

Discussions similaires

  1. Affichage d'un JPanel JFrame après removeall et ActionListener
    Par JannyBoop dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 28/09/2009, 00h20
  2. Page not found après mise en ligne sur le serveur
    Par iyfniky dans le forum Débuter
    Réponses: 3
    Dernier message: 15/05/2009, 19h46
  3. JTabbedPane+un button de fermeture
    Par bilal_inf dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 21/05/2007, 06h53
  4. Réponses: 2
    Dernier message: 14/09/2006, 12h04
  5. Réponses: 3
    Dernier message: 22/08/2006, 15h38

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