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 :

[Swing] specialisation JPanel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Par défaut [Swing] specialisation JPanel
    Bonjour,
    Dans le cadre d'un projet, j'ai voulu creer mon propre JPanel qui inclu une progressBar et un label.
    Le probleme est que au lancement de l'appli, il ne m'affiche pas mon panel, alors que si je redimenssionne la fenetre, il apparait.
    De plus, l'appel de la fonction setText() permet aussi de faire afficher le panel.

    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
     
    public class paneltest extends JPanel {
     
        private String text;
        JProgressBar jb = new JProgressBar();
        JLabel texte = new JLabel();
        int i = 0;
     
        paneltest(String t)
        {
           text = t;
        }
     
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            setVisible(true);
            //texte.setVisible(true);
            setLayout(new BorderLayout());
            texte.setText(getText());
            add(jb, BorderLayout.WEST);
            add(texte, BorderLayout.EAST);
        }
     
     
        public String getText() {
            return text;
        }
     
        public void setText(String text) {
            removeAll();
            this.text = text+""+i ;
            i++;
            add(jb, BorderLayout.WEST);
            add(texte, BorderLayout.EAST);        
            repaint();
        }
    }
    Ci dessous, le code de mon applet qui appelle ma classe
    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
     
    public class main extends javax.swing.JApplet {
        private paneltest test;
        @Override
        public void init() {
            try {
                test = new paneltest("coucou");
                java.awt.EventQueue.invokeAndWait(new Runnable() {
     
                    public void run() {
     
                        initComponents();
                        jPanel1.setLayout(new BorderLayout());
                        JLabel testlbl = new JLabel();
                        testlbl.setText("essai");
                        jPanel1.add(testlbl, BorderLayout.EAST);
                        jPanel1.add(test, BorderLayout.WEST);
                       jPanel1.setVisible(true);
                        jPanel1.repaint();
                    }
                });
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    Si quelqu'un a la solution pour que le panel soit affiché au demmarage de l'applet.

    Merci d'avance,

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Par défaut
    Si j'étais toi je respecterai un peu mieux la casse lorsque tu déclare quelque chose.... mais à première vue je ne comprends pas ton problème

  3. #3
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    modifie ton constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    paneltest(String t)
        {
           text = t;
           repaint();
        }

  4. #4
    Membre confirmé Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Par défaut
    merci jojodu31, tu m'as mis sur la voie.

    En fait, j'avais pas besoin de toucher a paintComponent(), mais c'est mes debuts avec SWING, je commence a comprendre comment ca marche.

    Voici ce que j'ai fais au final, si vous avez des remarques, n'hesitez pas, je suis preneur.
    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
    public class paneltest extends JPanel {
     
        private String text;
        JProgressBar jb = new JProgressBar();
        JLabel texte = new JLabel();
        int i = 0;
     
        paneltest(String t) {
            text = t;
            setLayout(new BorderLayout());
            texte.setText(getText());
            add(jb, BorderLayout.WEST);
            add(texte, BorderLayout.EAST);
            repaint();
        }
     
     
        public String getText() {
            return text;
        }
     
        public void setText(String text) {
            removeAll();
            this.text = text + "" + i;
            texte.setText(this.text);
            i++;
            jb.setValue(i);
            add(jb, BorderLayout.WEST);
            add(texte, BorderLayout.EAST);
            repaint();
        }
    }
    Sinon fluff, c'est vrai qu'il faut que je respecte un peu mieux la casse. Mais c'etait une sorte de brouillon, mais la prochaine fois, je ferais un effort.

    ....Probleme resolu

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

Discussions similaires

  1. SWING: des JPanel dans une JFrame
    Par julien.63 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 02/12/2007, 19h21
  2. [Swing] JPanel avec sa JScrollBar qui scrolle toute seule
    Par chcoust dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/11/2006, 14h37
  3. [Swing] Un JPanel dans un JScrollPane
    Par Quintoff dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 08/01/2006, 12h44
  4. [Swing]probleme pour changer de JPanel
    Par mereyj dans le forum Composants
    Réponses: 8
    Dernier message: 19/06/2005, 12h55
  5. [Swing] images et jPanel
    Par nma dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/10/2004, 23h20

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