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

 Java Discussion :

JButtons et changement de Panel dans une JApplet


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut JButtons et changement de Panel dans une JApplet
    Bonjour,

    Je ne parvient pas à effectuer un changement de panel lorsque l'utilisateur clique sur un bouton.
    J'ignore comment formuler le problème en une phrase alors je vais détailler.

    J'ai :
    Une classe 'login' qui contient des fonctions modifiant un JLayeredPane.
    Une classe 'map' qui contient elle aussi des fonctions modifiant un JLayeredPane.
    Une classe 'main' qui contient le JApplet et qui sert à écouter les boutons.

    Au lancement du JApplet, la classe 'main' utilise la classe 'login' pour générer et récupérer un JLayeredPane, puis l'affiche.
    Ce JLayeredPane contient un bouton, dont le MouseListener est réglé sur la classe 'main' pour tenter de remplacer le JLayeredPane actuel par celui de la classe 'map'.

    Voici le code source :

    main.java
    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
    package engine;
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    public class main extends JApplet implements MouseListener{
     
    	public login Login = new login();
    	public map CombatScene = new map();
    	public Container Applet = getContentPane();
     
    	public void init() {
     
    		Login.initPanel();
    		Login.loginButton.addMouseListener(this);
     
    	}
     
    	public void start(){
     
    		getContentPane().add(Login.panel());
     
    	}
     
    	public void mouseClicked(MouseEvent event) {
    		if(Login.loginButton.isFocusOwner()){
    			CombatScene.printTest();
    			getContentPane().add(CombatScene.panel());
    			getContentPane().repaint();
    			//Login.panel().removeAll();
    			getContentPane().remove(Login.panel());
    		}
     
        }
     
        public void mouseEntered(MouseEvent event) {
     
        }
     
        public void mouseExited(MouseEvent event) {
     
        }
     
        public void mousePressed(MouseEvent event) {
     
        }
     
        public void mouseReleased(MouseEvent event) {
     
        }
     
    }
    login.java
    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
    package engine;
     
    import javax.swing.*;
    import java.awt.event.*;
     
    public class login {
     
    	public JLabel loginLabel = new JLabel();
    	public JPasswordField loginPassword = new JPasswordField();
    	public JButton loginButton = new JButton();
    	public JLayeredPane pane = new JLayeredPane();
     
    	public void initPanel(){
    		this.loginLabel.setBounds(10, 20, 205, 24);
    		this.loginLabel.setText("Please enter your password :");
     
    		this.loginPassword.setBounds(10,44,200,24);
     
    		this.loginButton.setBounds(140, 80, 50, 25);
    		this.loginButton.setText("OK");
     
    		this.pane.add(this.loginLabel);
    		this.pane.add(this.loginPassword);
    		this.pane.add(this.loginButton);
    	}
     
    	public JLayeredPane panel(){
    		return this.pane;
    	}
     
     
     
    }
    map.java
    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
    package engine;
     
    import javax.swing.*;
     
    public class map {
     
    	public JLayeredPane pane = new JLayeredPane();
    	public JLabel test = new JLabel();
     
    	public JLayeredPane panel(){
     
    		return this.pane;
     
    	}
     
    	public void printTest(){
     
    		this.test.setBounds(0,0,70,24);
    		this.test.setText("Test !");
     
    		this.pane.add(this.test,1);
    		this.pane.repaint();
    	}
     
    }
    Actuellement, cliquer sur le JButton de la classe 'login' fait disparaitre son JLayeredPane, mais n'affiche pas le nouveau.

    Sauriez vous comment procéder ?

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Le principe du changement dynamique de composant graphique par un autre est simple :

    1) supprimer l'ancien composant du conteneur, conteneur.remove(component)
    2) ajouter le nouveau composant, conteneur.add(...)
    3) appeler la méthode conteneur.revalidate() du conteneur
    4) parfois appeler la méthode component.repaint() du composant

    Si c'est le composant à changer est le panel principal, alors tu as juste à le passer en argument à la méthode setContentPane(...)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut
    J'ignorais le point N°3, ça marche maintenant.
    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/09/2005, 12h10
  2. [C#] Travailler efficacement avec les panels dans une forme
    Par WwiloO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 27/06/2005, 16h33
  3. faire apparaitre et disparaitre un panel dans une frame
    Par Ghost Dog dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 22/04/2005, 02h55
  4. [AWT]Changement de panel dans un panel
    Par guipom dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 27/12/2004, 16h57
  5. Changements de colonnes dans une BDD MySQL
    Par arnaud_verlaine dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2003, 12h33

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