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 :

JFrame -> JApplet -> JScrollPane -> JTabbedPane - Rafraichissement qui ne se fait pas


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de savageman86
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Par défaut JFrame -> JApplet -> JScrollPane -> JTabbedPane - Rafraichissement qui ne se fait pas
    Bonjour à vous.

    J'ai une JApplet dans un JFrame.
    Au début de mon application, je met un JPanel dedans (pour l'identification), puis une fois identifié, je change pour un jScrollPane contenant un JTabbedPane.
    Problème : lors de ce changement, le contenu du JScrollPane (le JTabbedPane) n'apparaît pas... Par contre, dès que je redimensionne la fenêtre c'est bon !
    Avant, je n'avais pas ce JSrollPane et c'était bon aussi... Si quelqu'un a la petite astuce (j'ai essayé des repaint() sur un peut tous les éléments en présence), je suis preneur !

    D'avance merci.

    Savageman.

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Par défaut
    Essaye un pack() pour voir

    sinon peux tu envoyer du code compilable ?

  3. #3
    Membre confirmé
    Avatar de savageman86
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Par défaut
    Code minimal (en vrai, j'en ai bcp plus...).

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    package myPackage;
     
    import javax.swing.JApplet;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTabbedPane;
     
    public class MyApplet extends JApplet
    {
        private static JFrame frame = new JFrame();
     
        @Override
        public void init()
        {
            // Création d'un JPanel avec un JButton
            JPanel panel = new JPanel();
            JButton bouton = new JButton("Texte");
     
            // Le clic sur le JButton invoque onSuccessAuth
            bouton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    onSuccessAuth();
                }
            });
            panel.add(bouton);
     
            // Affichage du bordel
            getContentPane().add(panel);
            frame.setVisible(true);
        }
     
        void onSuccessAuth()
        {
            // Création du Jpanel dans le JTabbedPane dans le JScrollPane
            JPanel panel = new JPanel();
            JTabbedPane tabs = new JTabbedPane();
            JScrollPane scroll = new JScrollPane();
            JLabel label = new JLabel("Texte du nouveau panel");
            panel.add(label);
            tabs.add("Mon super panel", panel);
            scroll.setViewportView(tabs);
     
            // On ajoute le JScrollPane
            getContentPane().removeAll();
            getContentPane().add(scroll);
        }
     
        // Point d'entrée
        public static void main(String[] args)
        {
            MyApplet applet = new MyApplet();
            frame.setTitle("Ma super appli");
            frame.setSize(300, 150);
            MyApplet.frame.getContentPane().add(applet);
            applet.init();
            applet.start();
        }
    }
    Ici, le frame.pack() fonctionne, mais dans mon appli, non... La taille est fixée...

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Par défaut
    Même si tu fais frame.setResizable(false); ça fonctionne.
    Qu'est ce que tu veux dire par fixée ?

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ta JFrame est rendue visible avant que tu y ajoutes l'applet. Or tu devrais procéder dans l'autre sens
    (ajouter l'applet à la JFrame, puis rendre la JFrame visible)

    Par contre en ce qui concerne l'utilité d'une JApplet dans une JFrame, je ne vois pas trop... Normalement tu utilises une JApplet dans un navigateur, une JFrame pour une application externe... Weird

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

    Citation Envoyé par sinok Voir le message
    Par contre en ce qui concerne l'utilité d'une JApplet dans une JFrame, je ne vois pas trop... Normalement tu utilises une JApplet dans un navigateur, une JFrame pour une application externe... Weird
    Cela peut être intéressant pour faire un application unique qui puisse être exécuté dans une page web comme une applet standard, ou comme une application de bureau comme n'importe quelle autre application...


    Mais bon je n'aime pas trop la JFrame static dans ce code
    Et ce serait surement mieux de gérer un JPanel représentant l'application, et de placer ce dernier dans une applet ou une Jframe directement selon le cas...



    Pour en revenir à ton problème : tu modifies ton interfaces graphiques après l'avoir affiché. Dans ce cas pour que les modifs soient prise en compte il faut appeler validate() pour que le composer soit réorganiser par le layout et que les modifs soient prises en compte (on préférera utiliser revalidate() pour les composants Swing qui le gère, car cela permet de regrouper les réorganisation et ainsi d'éviter de refaire plusieurs fois la même chose).

    a++

Discussions similaires

  1. [Java] JScrollPane dans JTabbedPane + JPanel
    Par SoGeek dans le forum Composants
    Réponses: 3
    Dernier message: 21/02/2011, 16h51
  2. JApplet avec JScrollPane
    Par bru1985 dans le forum Applets
    Réponses: 0
    Dernier message: 06/06/2009, 16h48
  3. JPanel pour intégration en JFrame et JApplet
    Par jproto dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 11/01/2008, 15h33
  4. [AWT][Swing]JScrollPane et JTabbedPane
    Par willowII dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/11/2005, 10h54
  5. [Débutant] Jframe/JInternalFrame: prb avec JScrollPane
    Par flzox dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 12/12/2004, 01h08

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