Recréer un Jpanel
Résolu/Fermé
Poisson86
-
22 mars 2016 à 14:52
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 - 24 mars 2016 à 21:34
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 - 24 mars 2016 à 21:34
2 réponses
greg6614
Messages postés
592
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
3 juin 2017
107
Modifié par greg6614 le 23/03/2016 à 16:53
Modifié par greg6614 le 23/03/2016 à 16:53
Hello,
en effet tu dois avoir un nouveau JPanel pour ton sous-menu. Ensuite pour ce qui est du passage de l'un à l'autre, regarde du côté du layout CardLayout. Avec un exemple ICI
En espérant t'avoir aider
Greg
en effet tu dois avoir un nouveau JPanel pour ton sous-menu. Ensuite pour ce qui est du passage de l'un à l'autre, regarde du côté du layout CardLayout. Avec un exemple ICI
En espérant t'avoir aider
Greg
greg6614
Messages postés
592
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
3 juin 2017
107
Modifié par greg6614 le 23/03/2016 à 18:15
Modifié par greg6614 le 23/03/2016 à 18:15
Voilà un exemple de classe définissant un constructeur et un exemple de son instanciation :
Retour d’exécution en image du main ci dessus :
Pour mieux comprendre les mots clés
Je t'invite à jeter un oeil sur mon post ICI
En espérant t'avoir aider
Greg
public class Couleur { //Ici j'ai mes attributs qui vont avoir pour but de sauvegarder les valeurs des paramétres du constructeurs dans des variables encapsulées dans la classe //Le mot clés private signifie que ces variables ne sont visibles que dans ma classe private int rouge; private int vert; private int bleu; //Ici j'ai mon constructeur public Couleur(int rouge, int vert, int bleu) { //Rouge, Vert et Bleu sont des paramétres à passer lors de l'appel au constructeur //On affecte les valeurs des paramétres au variables encapsulées //Le mot clés this signifie l'instance en cour this.rouge = rouge; this.vert = vert; this.bleu = bleu; } //Retourne la valeur de la variable Rouge de l'objet courant public int getRouge(){ return this.rouge; } //Retourne la valeur de la variable Vert de l'objet courant public int getVert(){ return this.vert; } //Retourne la valeur de la variable Bleu de l'objet courant public int getBleu(){ return this.bleu; } //Ici la méthode prend un objet Couleur en paramétre qui sera donc à spécifier lors de l'appel de cette méthode public void melangerCouleurs(Couleur c){ //On affecte une nouvelle valeur à la variable Rouge de l'objet COURANT //En ajoutant la valeur de l'objet courant et la valeur de l'objet en paramétre this.rouge = this.getRouge() + c.getRouge(); this.vert = this.getVert() + c.getVert(); this.bleu = this.getBleu() + c.getBleu(); } }
public class Main { public static void main(String[] args) { //On crée deux objets de Type couleur avec le mot clés new Couleur c1 = new Couleur(128,168,200); Couleur c2 = new Couleur(154,255,11); //Affiche la valeur rouge de c1 soit 128 System.out.println(c1.getRouge()); //Affiche la valeur rouge de c2 soit 154 System.out.println(c2.getRouge()); //Les deux valeurs sont différentes car les variables de la classes sont recréée à chaque création d'un nouvel objet et sont donc indépendantes //Tu peux appeler des opérations sur un objet //Ici le mot clés this dans ta classe correspond à c1 c1.melangerCouleurs(c2); //Si tu affiches à nouveau la valeur de rouge des deux couleurs tu peux voir que celle de c2 n'a pas bougé car la modification à eu lieu sur l'objet courant soit c1 (celui sur lequel tu fais l'appel de méthode) //Retourn 128 + 154 soit 282 System.out.println(c1.getRouge()); //Affiche la valeur rouge de c2 soit 154 qui n'est pas modifiée System.out.println(c2.getRouge()); } }
Retour d’exécution en image du main ci dessus :
Pour mieux comprendre les mots clés
private
public
protected
static
Je t'invite à jeter un oeil sur mon post ICI
En espérant t'avoir aider
Greg
poisson86
Messages postés
123
Date d'inscription
vendredi 9 décembre 2011
Statut
Membre
Dernière intervention
18 janvier 2023
2
23 mars 2016 à 18:30
23 mars 2016 à 18:30
Si je ne veux utiliser que du public qu'est ce que cela change ?
greg6614
Messages postés
592
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
3 juin 2017
107
Modifié par greg6614 le 23/03/2016 à 19:21
Modifié par greg6614 le 23/03/2016 à 19:21
publicpermet de rendre accessible partout quelque soit la classe ton attribut ou ta méthode mais uniquement via une instance de ta classe.
Si je reprend l'exemple précédent en ajoutant un attribut
public:
public class Couleur { //Ici j'ai mes attributs qui vont avoir pour but de sauvegarder les valeurs des paramétres du constructeurs dans des variables encapsulées dans la classe //Le mot clés private signifie que ces variables ne sont visibles que dans ma classe private int rouge; private int vert; private int bleu; public String rvb; //Ici j'ai mon constructeur public Couleur(int rouge, int vert, int bleu) { //Rouge, Vert et Bleu sont des paramétres à passer lors de l'appel au constructeur //On affecte les valeurs des paramétres au variables encapsulées //Le mot clés this signifie l'instance en cour this.rouge = rouge; this.vert = vert; this.bleu = bleu; this.rvb = "["+this.getRouge()+","+this.getVert()+","+this.getBleu()+"]"; } //Retourne la valeur de la variable Rouge de l'objet courant public int getRouge(){ return this.rouge; } //Retourne la valeur de la variable Vert de l'objet courant public int getVert(){ return this.vert; } //Retourne la valeur de la variable Bleu de l'objet courant public int getBleu(){ return this.bleu; } //Ici la méthode prend un objet Couleur en paramétre qui sera donc à spécifier lors de l'appel de cette méthode public void melangerCouleurs(Couleur c){ //On affecte une nouvelle valeur à la variable Rouge de l'objet COURANT //En ajoutant la valeur de l'objet courant et la valeur de l'objet en paramétre this.rouge = this.getRouge() + c.getRouge(); this.vert = this.getVert() + c.getVert(); this.bleu = this.getBleu() + c.getBleu(); } }
public class Main { public static void main(String[] args) { //On crée deux objets de Type couleur avec le mot clés new Couleur c1 = new Couleur(128,168,200); Couleur c2 = new Couleur(154,255,11); //Affiche la valeur rouge de c1 soit 128 System.out.println(c1.getRouge()); //Affiche la valeur rouge de c2 soit 154 System.out.println(c2.getRouge()); //Les deux valeurs sont différentes car les variables de la classes sont recréée à chaque création d'un nouvel objet et sont donc indépendantes //Tu peux appeler des opérations sur un objet //Ici le mot clés this dans ta classe correspond à c1 c1.melangerCouleurs(c2); //Si tu affiches à nouveau la valeur de rouge des deux couleurs tu peux voir que celle de c2 n'a pas bougé car la modification à eu lieu sur l'objet courant soit c1 (celui sur lequel tu fais l'appel de méthode) //Retourn 128 + 154 soit 282 System.out.println(c1.getRouge()); //Affiche la valeur rouge de c2 soit 154 qui n'est pas modifiée System.out.println(c2.getRouge()); //Tu peux accéder à la variable public rvb via l'objet System.out.println(c1.rvb); } }
Pense à regarder le lien que je t'ai donné en fin du post précédent.
poisson86
Messages postés
123
Date d'inscription
vendredi 9 décembre 2011
Statut
Membre
Dernière intervention
18 janvier 2023
2
24 mars 2016 à 00:54
24 mars 2016 à 00:54
Merci bien je regarde tout demain :)
greg6614
Messages postés
592
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
3 juin 2017
107
24 mars 2016 à 11:53
24 mars 2016 à 11:53
Avec plaisir :)
poisson86
Messages postés
123
Date d'inscription
vendredi 9 décembre 2011
Statut
Membre
Dernière intervention
18 janvier 2023
2
24 mars 2016 à 13:31
24 mars 2016 à 13:31
Bon j'ai compris ton exemple mais je n'arrive pas à le transcrire dans mon programme en graphique voici le code de mon menu et ma question pour faire un sous menu, c'est de refaire un JPanel ou de faire autre chose parce que là je tourne en rond
JButton b_jouer = new JButton("Jouer");
JButton b_options = new JButton("Options");
JButton b_boutique = new JButton("Boutique");
JButton b_succes = new JButton("Succès");
Pan_Menu pan_menu = new Pan_Menu();
public Fenetre(){
/////super("Kash: CW");
this.setSize(1000, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setContentPane(pan_menu);
pan_menu.setLayout(null);
//Bouton Jouer
b_jouer.addActionListener(new Fen_Jouer());
pan_menu.add(b_jouer);
b_jouer.setBounds(350, 250, 300, 100);
//Bouton Options
b_options.addActionListener(new Options());
pan_menu.add(b_options);
b_options.setBounds(850, 430, 100, 100);
this.setVisible(true);
}
public class Pan_Menu extends JPanel {
JButton bouton = new JButton("Mon bouton");
public void paintComponent(Graphics g){
Font font = new Font("Courier", Font.BOLD, 40);
g.setFont(font);
g.setColor(Color.RED);
g.drawString("Kash : Celestial Wonder", 225,130);
/* try { Image img = ImageIO.read(new File("menu.png"));
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
//Pour une image de fond
//g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
} catch (IOException e) {
e.printStackTrace();
} */
}
}
23 mars 2016 à 17:25
J'ai vraiment du mal avec les this. ou les objet. lorsque je fais un new class ^^