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

Interfaces Graphiques en Java Discussion :

comment naviger dans une seule interface en JAVA


Sujet :

Interfaces Graphiques en Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut comment naviger dans une seule interface en JAVA
    Bonjour,
    J'ai un petit problème concernant la navigation dans une seule interface, je veux que mon interface soit comme un menu contenant des Étapes
    Et quand je clique sur une bouton suivant m'affiche l'étape suivant dans la même interface, comment le faire!!, si quelqu'un a une idée sur se sujet je serais ravi qu'il me partage et merci d'avance.

    Nom : interface.png
Affichages : 294
Taille : 58,5 Ko

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu peux utiliser un CardLayout, qui permet de n'afficher qu'un seul composant (une étape) parmi plusieurs (toutes les étapes). Avec 2 JButton, pour avancer ou reculer, dans les différentes étapes.

    Voici un POC rapide (pas de gestion de la fin entre autres) :

    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
    public class WizardPanel extends JPanel {
     
        public WizardPanel(JPanel...panels) {
     
            setLayout(new BorderLayout());
     
            JPanel mainPanel = new JPanel();
            CardLayout cardLayout = new CardLayout();
            mainPanel.setLayout(cardLayout);
     
            add(mainPanel, BorderLayout.CENTER);
     
            for(int index=0; index<panels.length; index++) {
                mainPanel.add(panels[index], String.valueOf(index)); // dans un cardlayout, chaque composant à un nom : ici j'utilise juste un index de 0 à nombre d'étapes-1
            }
     
            Controller controller = new Controller(panels.length, mainPanel, cardLayout); // le controleur est chargé de gérer les actions sur les boutons
            add(createButtonPanel(controller),BorderLayout.SOUTH);
     
        }
     
        private JPanel createButtonPanel(Controller controller) {
            JPanel panel = new JPanel();
            panel.setLayout(new GridLayout(0, 2));
            JButton previousButton = new JButton("Précédent");
            JButton nextButton = new JButton("Suivant");
            controller.addPreviousButton(previousButton);
            controller.addNextButton(nextButton);
            controller.setButtonsEnabling();
            panel.add(previousButton);
            panel.add(nextButton);
            return panel;
        }
     
        private class Controller implements ActionListener {
     
            private int nbPanels;
            private int currentPanelIndex;
            private Container container;
            private CardLayout cardLayout;
            private JButton nextButton;
            private JButton previousButton;
     
            public Controller(int nbPanels, Container container, CardLayout cardLayout) {
                this.nbPanels=nbPanels; // nombre d'étapes
                this.container=container;
                this.cardLayout=cardLayout;
                currentPanelIndex=0; // étape actuelle (on commence par la première)
            }
     
            /**
              * active ou pas chacun des boutons en fonction de l'étape active
              */
            public void setButtonsEnabling() {
                this.previousButton.setEnabled(currentPanelIndex>0);
                this.nextButton.setEnabled(currentPanelIndex<nbPanels-1);
            }
     
            public void addNextButton(JButton nextButton) {
                this.nextButton=nextButton;
                this.nextButton.addActionListener(this);
            }
     
            public void addPreviousButton(JButton previousButton) {
                this.previousButton=previousButton;
                this.previousButton.addActionListener(this);
            }
     
            @Override
            public void actionPerformed(ActionEvent e) {
                if ( e.getSource()==nextButton ) {
                    currentPanelIndex++;
                }
                else if ( e.getSource()==previousButton ) {
                    currentPanelIndex--;
                }
                cardLayout.show(container, String.valueOf(currentPanelIndex));
                setButtonsEnabling();
            }
     
        }
     
        public static void main(String[] args) {
     
            JFrame exemple = new JFrame("Exemple wizard");
            exemple.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            // trois étapes, dans trois panels différents
            JPanel panel1=createExemplePanel("ECRAN DEBUT");
            JPanel panel2=createExemplePanel("ECRAN INTERMEDIAIRE");
            JPanel panel3=createExemplePanel("ECRAN FIN");
     
            WizardPanel wizardPanel =  new WizardPanel(panel1, panel2, panel3);
            exemple.setContentPane(wizardPanel);
     
            exemple.setSize(300, 300);
            exemple.setLocationRelativeTo(null);
            exemple.setVisible(true);
     
        }
     
        private static JPanel createExemplePanel(String text) {
            JPanel panel = new JPanel();
            panel.setLayout(new BorderLayout());
            panel.add(new JLabel(text,JLabel.CENTER),BorderLayout.CENTER);
            return panel;
        }
     
    }

  3. #3
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci joel.drigo,
    c'est éxactement ce que j'ai besoin je vais éssayer , j'estime bien qu'il sa marche

Discussions similaires

  1. [Débutant] comment afficher plusieurs images dans une seule interface ?
    Par youssa81 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 06/02/2009, 00h36
  2. Réponses: 11
    Dernier message: 11/07/2008, 14h58
  3. Quatre images dans une seul interface
    Par usto2005 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 06/05/2008, 13h36
  4. Réponses: 2
    Dernier message: 21/08/2006, 21h27

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