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 :

Syteme d'onglet java/swing


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut Syteme d'onglet java/swing
    Bonjour à tous,

    je suis actuellement en train de développer une petite application et je souhaiterais utiliser un système d'onglet (JTabbedPane) avec pour chaque onglet un panel associé qui présentera diverses informations.

    Étant débutant j'ai un problème concernant la séparation des actions et de la présentation.

    J'ai une classe principale qui définit les onglets : AppliFenetre.

    Une classe par onglet dans lesquelles je définis le layout.

    Enfin une classe pour l'action, qui va récuperer mes valeurs (pour chaque onglet).

    Je n'arrive pas a coordonner cet ensemble de classe.

    Est ce que mon action devrait se trouver dans ma classe de définition de l'onglet ou est-il possible d'appeller l'action depuis ma classe d'onglet?

    Merci de vos réponses....

  2. #2
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Salut !

    un coup d'oeil ici :

    http://java.sun.com/docs/books/tutor...abbedpane.html

    devrait t'aider

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Merci de ta réponse, j'avais déjà vu cette page,

    j'arrive à afficher des onglets, mais mon problème réside dans le fait que mon est application est statique. C'est à dire que les valeurs sont récupérées au lancement de l'application et ne sont pas actualisées.

    Je souhaiterais qu'au changement d'onglet mes valeurs pour l'onglet sélectionné soit récupérées a nouveau et actualisées.

    Est ce que je devrais utiliser Change Listener? Et si oui comment?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    En fait voila mes 3 classes:

    Classe principale avec le JTabbedPane

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
       public class AppliFen extends JFrame{
     
     
    //Déclaration et instanciation des composants            
                    //Creation du panel
                    private JPanel panel = new JPanel(); 
                    //Déclaration de la barre de menu
                    private JMenuBar menuBar = new JMenuBar();                
                    //Déclaration des choix et sous choix sur le menu
                    private JMenu menu1 = new JMenu("Fichier");
                    private JMenu menu1_2 = new JMenu("Sous ficher");
                    private JMenu menu2 = new JMenu("Edition");
                    private JMenu menu3 = new JMenu("Aide");           
                    //Déclaration des éléments du menu
                    private JMenuItem item1 = new JMenuItem("Ouvrir");
                    private JMenuItem item2 = new JMenuItem(new QuitterAction("Quitter"));
                    private JMenuItem item5= new JMenuItem("Centre d'aide");
                    private JMenuItem item6 = new JMenuItem (new AProposAction(this, "A propos"));
                    //Checkbox dans le menu
                    private JCheckBoxMenuItem jcmi1 = new JCheckBoxMenuItem("Choix 1");
                    private JCheckBoxMenuItem jcmi2 = new JCheckBoxMenuItem("Choix 2");
     
     
     
     
    //Construction de l'appli
                    public AppliFen(){
                        super();                    
                        build();
                    }
     
     
     
    //Methode qui définit les caracteristiques de l'appli
                    private void build(){                                        
                    //On définit la taille    
                    setSize(850, 400);                
                    //On définit le titre
                    setTitle("Moniteur");     
                    //On rend la fenetre visible
                    setVisible(true);                
                    //On centre
                    setLocationRelativeTo(null);                
                    //On peut la redimmensionner
                    setResizable(true);                
                    //On dit à l'application de se fermer lors du clic sur la croix
                    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                 
                    //Construction du panel
                    setContentPane(buildContentPane());
     
     
     
     //Création des onglets
               JTabbedPane onglets = new JTabbedPane(SwingConstants.TOP);
     
               //Taille préférée des onglets
               onglets.setMinimumSize(new Dimension(700,300));
     
               //Couleurs des onglets
            onglets.setBackground(Color.white);
     
     
            //Listener des onglets
                 ChangeListener changeListener = new ChangeListener() {
     
                     public void stateChanged(ChangeEvent changeEvent) {
                       JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource();
                       int index = sourceTabbedPane.getSelectedIndex();
                       System.out.println("Tab changed to: " + sourceTabbedPane.getTitleAt(index));
                     }
                   };
                   onglets.addChangeListener(changeListener);
     
     
     
     
    //Création des panels d'onglets        
                   //Panel de l'onglet Overview se trouve dans la classe OO
                   JPanel ongletOverview = new OngletOverview();
     
                   //On ajoute l'onglet au menu d'onglets
                   onglets.add(ongletOverview, "Overview");
     
                   //Panel de l'onglet Threads se trouve dans la classe OT
                   JPanel ongletThreads = new OngletThreads();
     
                   //On ajoute l'onglet au menu d'onglets
                   onglets.add(ongletThreads, "Threads");
     
                   //Panel de l'onglet Systeme se trouve dans la classe OT
                   JPanel ongletSys = new OngletSys();
     
                   //On ajoute l'onglet au menu d'onglets
                   onglets.add(ongletSys, "Systeme");    
     
                   //Panel de l'onglet Systeme se trouve dans la classe OT
                   JPanel ongletClasses = new OngletClasses();
     
                   //On ajoute l'onglet au menu d'onglets
                   onglets.add(ongletClasses, "Classes");    
     
                       //Ajoute les onglets au panel panel
                       panel.add(onglets);
     
     
                       //Opacité des onglets
                       onglets.setOpaque(true);
     
     
                       //f.getContentPane().add(panel);
                       //f.setVisible(true);
     
     
                }
     
    //Création du panel
                           private JPanel buildContentPane(){
                           //Instanciation du panel
                           panel = new JPanel(new BorderLayout());                       
                           panel.setBackground(Color.white);
     
                       //Retour de la méthode=affichage du panel
                               return panel;      
     
                   }       
    }


    Ma classe onglet avec son layout:

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    package app;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.lang.management.ManagementFactory;
    import java.lang.management.ThreadMXBean;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
        public class OngletThreads extends JPanel{
     
            //Déclaration des elements du panel
            static JLabel label1 = new JLabel();
            static JLabel label2 = new JLabel();
            static JLabel label3 = new JLabel();
            static JLabel label4 = new JLabel();
            static JLabel label5 =new JLabel();
            static JLabel label6 =new JLabel();
            static JLabel label7 = new JLabel();
     
     
            //Constructeur
            public OngletThreads(){
                super();
     
                AfficherThreads m = new AfficherThreads();
     
            //Nom de l'onglet
            JLabel titreOnglet = new JLabel("Threads");
     
            //Titre dans l'onglet
            //add(titreOnglet);
     
            //Taille de l'onglet
            setPreferredSize(new Dimension(600, 300));
     
            //Définition du layout
            setLayout(new GridBagLayout());
     
     
     
                GridBagConstraints gbc = new GridBagConstraints();
                //Placement du label1
                //gridx:colonne de départ gridy: ligne de départ
                gbc.gridx = gbc.gridy = 0;
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.insets = new Insets(5, 5, 5, 5);
                add(label1, gbc);
     
     
                //Placement du label2
                gbc.gridx = 0;
                gbc.gridy = 1;                        
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.insets = new Insets(5, 5, 5, 5);
                add(label2, gbc);
     
     
                //Label3                       
                gbc.gridx = 0;
                gbc.gridy = 2;               
                gbc.gridheight = gbc.gridwidth = 1;
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.insets = new Insets(5, 5, 5, 5);
                add(label3, gbc);
     
     
                //Label4    
                gbc.gridx = 0;
                gbc.gridy = 3;        
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.insets = new Insets(5, 5, 5, 5);
                add(label4, gbc);
     
     
                //Label5                           
                gbc.gridx = 0;    
                gbc.gridy = 4;
                gbc.gridheight = gbc.gridwidth = 1;
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.insets = new Insets(5, 5, 5, 5);
                add(label5, gbc);
     
     
                //Label6                           
                gbc.gridx = 0;    
                gbc.gridy = 5;
                gbc.gridheight = gbc.gridwidth = 1;
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.insets = new Insets(5, 5, 5, 5);
                add(label6, gbc);
     
     
                //Label7                           
                gbc.gridx = 0;    
                gbc.gridy = 6;
                gbc.gridheight = gbc.gridwidth = 1;
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.insets = new Insets(5, 5, 5, 5);
                add(label7, gbc);
     
            }
     
     
     
            //Getter & Setter
            public JLabel getLabel(){
                return label1;
                    }
     
            public JLabel getLabel2() {
                return label2;
            }
     
            public JLabel getLabel3() {
                return label3;
            }
     
            public JLabel getLabel4() {
                return label4;
            }
     
            public JLabel getLabel5() {
                return label5;
            }
     
            public JLabel getLabel6() {
                return label6;
            }
     
            }
    Et enfin ma méthode pour récuperer les threads:

    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
    public class AfficherThreads implements ChangeListener{
     
        @Override
        public void stateChanged(ChangeEvent e) {
     
            ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
     
            OngletThreads.label1.setText("Live Threads : " + threadBean.getThreadCount());;
            OngletThreads.label2.setText("Daemon threads : " +  threadBean.getDaemonThreadCount());
            OngletThreads.label3.setText("Total threads started : " + threadBean.getTotalStartedThreadCount());
            OngletThreads.label4.setText("Peak : " + threadBean.getPeakThreadCount());
            OngletThreads.label5.setText("");
            OngletThreads.label6.setText("");
     
        }
    }


    Voila, et ce que je souhaiterais c'est que les valeurs soit affichés dans le panel de mon onglet et rafraichit a chaque clic sur l'onglet.

    Est ce possible?

    Est ce que je suis completement a coté de la plaque??

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Je n'ai pas regardé le code (trop long, trop compliqué), mais si tu veux exécuter du code sur les changements d'onglet, oui, il faut utiliser un ChangeListener.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        ChangeListener tabListener = new ChangeListener()
        {
          public void stateChanged(ChangeEvent event)
          {
            JTabbedPane tabpane = (JTabbedPane) event.getSource();
            int selectedTabIndex = tabpane.getSelectedIndex();
            JPanel panel = (JPanel) tabpane.getComponentAt(selectedTabIndex);
            panel.maMethodePourMettreAJour();
          }
        };
        tabPanel.addChangeListener(tabListener);
    Fred

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Merci de ta réponse,

    j'ai bien ajouté le listener mais est ce que je dois le placer dans ma classe principale ou dans la classe de mon onglet?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    En fait je pense que mon problème est plus complexe car il faudrait que tout les éléments se mettent a jour automatiquement toutes les secondes si c'est possible, étant donné que mon appli est censé être un moniteur de supervision.

    Existe t-il un procédé particulier?

    Timer? Création de threads? Je ne suis pas bien au fait concernant ces techniques...

Discussions similaires

  1. [Java Swing]JButton avec TableModel
    Par dim_italia dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/02/2006, 21h04
  2. [debutant]import java.swing?
    Par arou dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/02/2006, 12h13
  3. Séminaire Java Swing en vidéo
    Par Olivier Delmotte dans le forum Evolutions du club
    Réponses: 3
    Dernier message: 16/01/2006, 12h33
  4. Application lourde en Java, Swing ou autre...
    Par eponette dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 23/09/2005, 22h17
  5. [Java-Swing][HTML] Page html à inclure dans application Java
    Par terminagroo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 04/07/2005, 10h04

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