Je souhaiterais récuperer les stats d'un perso dans la fenêtre et l'afficher dans le panel zoneDessin. Après avoir vu plusieurs méthodes non concluante sur internet je pose ma question ici. Comment puis je faire afficher du texte JLabel dans ma fenêtre autre que dans le paint (car le texte apparaîtra uniquement au moment du clic d'un bouton) ou sans JLabel si vous avez une autre solution je veux juste que sa s'affiche dans la fenêtre.
PS : le code est un peu brouillon je m'en excuse, ce que j'ai tester c'est de déclarer mon JLabel puis le crée vide, ensuite l'ajouter dans le panel zoneDessin pour ensuite au clic d'un bouton faire un monJLabel.setText("Critique"+Principal.getCritique());
Merci d'avance !
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package projetjeux;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
*
* @author calvin
*/
public class Fenetre extends JFrame implements ActionListener {
//CONSTANTES -----------------------------------------
private JPanel zoneDessin; // zone de dessin central ou on va dessiner
private JPanel pannelCombat; // zone boutons bas dans combat
private JPanel pannelHome; // zone boutons bas dans l'accueil
private JPanel pannelStat; // zone boutons bas dans les stats
private JPanel pannelBoutique; // zone boutons bas dans la boutique
private JPanel pannelLaunch; // zone boutons bas dans le launch
private JPanel pannelCreationH, pannelCreationB; // zone boutons bas dans le launch
private JPanel general, generalHaut; // zone boutons bas en general (A remplir avec le contenu des autres JPannel)
private Image home; // les images
private Combat monCombat; // le combat
private int i=0; // compteur
private persoPrincipal Principal; // Personnage principal
private JLabel attaque, defense, critique; // affichage pts
private image fond ; // Conteneur d'image de fond
private String newLine = System.getProperty("line.separator"); // affichage d'un saut de ligne
//CONSTRUCTEUR -----------------------------------------
public Fenetre(String titre, int largeur, int hauteur)
{
super(titre); // Titre de la fenêtre
fond = new image(); // on charge la structure de données Diapo
fond.ajouter("Home.jpg");
fond.ajouter("boutique.jpg");
fond.ajouter("fondTest.jpg");
fond.ajouter("stat.jpg");
fond.ajouter("Launch.jpg");
fond.ajouter("creationPerso.jpg");
// declaration du personnes
Principal = new persoPrincipal();
// charge les images
try{
home = ImageIO.read(new File("Launch.jpg"));
}
catch( IOException ex ) {ex.printStackTrace();}
getContentPane().setLayout(new BorderLayout());
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// on place les boutons et la zone de dessin
mise_en_page( largeur, hauteur );
repaint();
}
//METHODES -----------------------------------------
// Mise en page des boutons, zone de dessin ...
private void mise_en_page(int maxX, int maxY){
// insertion boutons Combat
this.pannelCombat = new JPanel(new GridLayout());
ajouteBouton("Attaque", pannelCombat);
ajouteBouton("Defense", pannelCombat);
ajouteBouton("Critique", pannelCombat);
ajouteBouton("Passer son tour", pannelCombat);
ajouteBouton("Fuir", pannelCombat);
// insertion boutons Boutique
this.pannelBoutique = new JPanel(new GridLayout());
ajouteBouton("Potion de vie", pannelBoutique);
ajouteBouton("boost d'attaque", pannelBoutique);
ajouteBouton("Boost de défense", pannelBoutique);
ajouteBouton("Fiole d'expérience", pannelBoutique);
ajouteBouton("Fin des achats", pannelBoutique);
// insertion boutons Accueil
this.pannelHome = new JPanel(new GridLayout());
ajouteBouton("Combat", pannelHome);
ajouteBouton("Boutique", pannelHome);
ajouteBouton("Stats", pannelHome);
ajouteBouton("Quitter le jeu", pannelHome);
// insertion boutons Stats
this.pannelStat = new JPanel(new GridLayout());
ajouteBouton("Retour", pannelStat);
// insertion boutons launch
this.pannelLaunch = new JPanel(new GridLayout());
ajouteBouton("Jouer", pannelLaunch);
// insertion boutons création
this.pannelCreationH = new JPanel(new GridLayout());
ajouteBouton("+1 Attaque", pannelCreationH);
ajouteBouton("+1 Defense", pannelCreationH);
ajouteBouton("+0.05 Critique", pannelCreationH);
this.pannelCreationB = new JPanel(new GridLayout());
ajouteBouton("-1 Attaque", pannelCreationB);
ajouteBouton("-1 Defense", pannelCreationB);
ajouteBouton("-0.05 Critique", pannelCreationB);
ajouteBouton("Fin", pannelCreationB);
// création du panel general et insertion du pannelHome dedans
this.general = new JPanel(new GridLayout());
general.add(pannelLaunch);
getContentPane().add(this.general,"South"); // panel pour general au sud
this.generalHaut = new JPanel(new GridLayout());
getContentPane().add(this.generalHaut,"North"); // panel pour general au nord
// texte
attaque = new JLabel();
defense = new JLabel();
critique = new JLabel();
// zone de dessin
this.zoneDessin = new JPanel();
this.zoneDessin.setSize(maxX,maxY);
this.zoneDessin.setPreferredSize(new Dimension(maxX,maxY));
this.zoneDessin.add(attaque);
this.zoneDessin.add(defense);
this.zoneDessin.add(critique);
getContentPane().add(this.zoneDessin,"Center"); // panel pour zoneDessiner au milieu
pack();
setVisible(true);
}
// Accesseur au zoneDessin de la fenêtre
public Graphics getzoneDessin() {
return this.zoneDessin.getGraphics();
}
// Procédure d'arrêt
void quitter() {
System.exit(0);
}
// Efface
void effacer() {
Graphics g = this.zoneDessin.getGraphics();
g.setColor( Color.WHITE );
g.fillRect(0,0,this.getWidth(),this.getHeight() );
}
// Ajoute un bouton, avec le texte label, au panneau p
private void ajouteBouton(String label, JPanel p) {
JButton b = new JButton(label);
p.add(b);
b.addActionListener(this);
}
public void mise_a_jour(JLabel attaque){
this.attaque = attaque;
}
// dessin de la fenêtre générale
@Override
public void paint(Graphics g)
{
this.general.repaint(); // on redessine les boutons bas
g= this.zoneDessin.getGraphics(); // on redessine dans le panel de dessin
effacer();
// trois styles d'ecriture
Font StyleLesTitres = new Font("TimesRoman",Font.BOLD,18);
Font StyleMoyen = new Font("TimesRoman", Font.ITALIC,14);
Font StyleNormal = new Font("TimesRoman", Font.PLAIN,12);
//image
g.drawImage(home,0,0,this);
}
// Gestion des actions de clic
@Override
public void actionPerformed(ActionEvent e){
// on capte l'evenement : nom du bouton !
String c = e.getActionCommand();
// _____ POUR LE PANEL COMBAT _____
if (c.equals("Attaque")){ // Si on clic sur attaque
i++;
System.out.println(newLine+
"---------- Tour n°"+
i);
monCombat.Combattre("Attaque");
}
if (c.equals("Defense")){ // Si on clic sur defense
i++;
System.out.println(newLine+
"---------- Tour n°"+
i);
monCombat.Combattre("Defense");
}
if (c.equals("Critique")){ // Si on clic sur critique
i++;
System.out.println(newLine+
"---------- Tour n°"+
i);
monCombat.Combattre("Critique");
}
if (c.equals("Passer son tour")){ // Si on clic sur Passer son tour
i++;
System.out.println(newLine+
"---------- Tour n°"+
i);
monCombat.Combattre("Passer son tour");
}
if (c.equals("Fuir")){ // Si on clic, Fuis le combat et retour a l'accueil (doit remettre le combat a 0)
System.out.println(newLine+
"Vous avez fui le combat...");
i=0;
changerDePanel(pannelHome);
try{
home = ImageIO.read(new File( fond.getPhoto(0) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
}
// _____ POUR LE PANEL HOME _____
if (c.equals("Quitter le jeu")){ // Si on clic, Quitte le jeu
quitter();
}
if (c.equals("Combat")){ // Si on clic, Change le pannel en pannelCombat
changerDePanel(pannelCombat);
try{
home = ImageIO.read(new File( fond.getPhoto(2) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
// Creation du combat
monCombat =new Combat();
// Crée Ennemi
Personne Ennemie1 = new Ennemi();
Personne Ennemie2 = new Ennemi();
Personne Ennemie3 = new Ennemi();
// remplit les 2 équipes
monCombat.equipePrincipal(Principal);
monCombat.equipeEnnemi(Ennemie1,Ennemie2,Ennemie3);
}
if (c.equals("Boutique")){ // Si on clic, Change le pannel en pannelBoutique
changerDePanel(pannelBoutique);
try{
home = ImageIO.read(new File( fond.getPhoto(1) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
}
if (c.equals("Stats")){ // Si on clic, Change le pannel en pannelStat
changerDePanel(pannelStat);
try{
home = ImageIO.read(new File( fond.getPhoto(3) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
}
// _____ POUR LE PANEL STAT _____
if (c.equals("Retour")){ // Si on clic, Change le pannel en pannelHome
changerDePanel(pannelHome);
try{
home = ImageIO.read(new File( fond.getPhoto(0) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
}
// _____ POUR LE PANEL LAUNCH _____
if (c.equals("Jouer")){ // Si on clic, Change le pannel en pannelHome
addHaut(pannelCreationH);
changerDePanel(pannelCreationB);
try{
home = ImageIO.read(new File( fond.getPhoto(5) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
critique.setText("Critique"+Principal.getCritique());
attaque.setText("Attaque"+Principal.getAttaque());
defense.setText("Defense"+Principal.getDefense());
}
// _____ POUR LE PANEL CREATION _____
if (c.equals("Fin")){ // Si on clic, Change le pannel en pannelHome
suppHaut();
changerDePanel(pannelHome);
try{
home = ImageIO.read(new File( fond.getPhoto(0) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
}
if (c.equals("+1 Attaque")){ // Si on clic +1 attaque
Principal.ajouteAttaque();
mise_a_jour(attaque);
}
if (c.equals("+1 Defense")){ // Si on clic +1 defense
Principal.ajouteDefense();
mise_a_jour(defense);
}
if (c.equals("+0.05 Critique")){ // Si on clic +0.05 critique
Principal.ajouteCritique();
mise_a_jour(critique);
}
if (c.equals("-1 Attaque")){ // Si on clic -1 attaque
Principal.supprimerAttaque();
mise_a_jour(attaque);
}
if (c.equals("-1 Defense")){ // Si on clic -1 defense
Principal.supprimerDefense();
mise_a_jour(defense);
}
if (c.equals("-0.05 Critique")){ // Si on clic -0.05 critique
Principal.supprimerCritique();
mise_a_jour(critique);
}
// _____ POUR LE PANEL BOUTIQUE _____
if (c.equals("Fin des achats")){ // Si on clic, Change le pannel en pannelHome
changerDePanel(pannelHome);
try{
home = ImageIO.read(new File( fond.getPhoto(0) ) ); // on charge une image
}
catch( IOException ex ) {ex.printStackTrace();}
}
repaint();
}
// Supprime le contenu du panel general et le remplit avec le contenu du panel New
public void changerDePanel(JPanel New){
general.removeAll();
general.add(New, "South");
general.revalidate();
}
// Supprime le contenu du panel generalHaut
public void suppHaut(){
generalHaut.removeAll();
generalHaut.revalidate();
}
// remplit avec le panel haut avec le contenu du panel New
public void addHaut(JPanel New){
generalHaut.removeAll();
this.generalHaut.add(New, "North");
generalHaut.revalidate();
}
}
JLabel ne s'affiche pas
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.