MISE A JOUR JLABEL.....DS UN JPANEL????

Signaler
Messages postés
149
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
19 janvier 2009
-
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
-
Bonjour j'ia un probléme au niveau de la mise a jour d'un JPanel ca marche mais 1 seul fois,
J'ai un petit jeu et a chaque fois j'incremente le score du gagnant mais ceci n'est fait qu'une la 1ére fois aprés comme s'il ne trovue plus le JPanel :
Voici ce que j'ai fait :
////////////////////////////////////////////////////////////////////////////////

class SuivitJeu extends JPanel
{
SuivitJeu()
{
//Je crée mon JPanel avec image en arriére plan
//Qui ne contient que des JLabel et une image aussi
}
public void AffScore(int j1,int j2)
{
//Mise a jour Joueur 1
s1.setVisible(false); //JLabel qui contient le score du joueur1
this.remove(s1);
s1=new JLabel();
s1=getText(" "+j1+" ",18,22,Color.ORANGE);
s1.setVisible(true);
this.add(s1,2);


//Mise a jour Joueur 2
s2.setVisible(false);//JLabel qui contient le score du joueur2
this.remove(s2);
s2=new JLabel();
s2=getText(" "+j2+" ",18,22,Color.ORANGE);
s2.setVisible(true);
this.add(s2,5);
}

//////////////////////////////////////////////////////////////////////
Le probléme est que le compilateur ne voi plus ce JPanel aprés la premiére mise a jour...
MERIC SVP aidez moi
j'ia meme essayé d'afficher la classe du SuivitJeu il me dit tj (Pointeur NULL ).....au 2éme esssaie...Je seria pbligé de fermé l'application et de la réouvrir....
SVP je ne comprend plus quoi faire....

8 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Pourquoi donc détruire et recréer tes JLabel à chaque fois ??

_

<spa></spa>
Messages postés
149
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
19 janvier 2009

Parceque quand je met:
s1=getText(j1);
Il na m'afiche aucune erreur de saisie mais le JLabel n'est pas mis a jour....
Je n'ai trouvé aucune autre méthode...je ne sais pas comment le mettre a jour vu que la fenetre (JFrame) est chargé une seule fois....
Vous avez une autre facon de faire?
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut, dans ta methode getText tu fais quoi??????

si dans ta methode tu renvois un JLabel faut m'expiquer pourquoi tu fais

s1=new JLabel();


s1= getText(" "+j1+" ",18,22,Color.ORANGE);



Sinon normalement pour updater le texte d'un label avec un new texte tu dois faire

label.setText("un texte");



envois le code de ta methode getText(.....)

WORA
Messages postés
149
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
19 janvier 2009

Merci ben pour le setText j'ai déja essayé mais a ne marche pas(avec les applets ca marche mais av ec le JFrame peut etre car il ne rafraichi pas la page je ne comprend pas pouruqoi d'ailleurs....)
Bon je t'envoie le code de getText elle ne fait rien de spécile juste la mise en forme:
/////////////////////////////////////////
public JLabel getText(String txt,int font,int tail,Color coul)
{
JLabel lb=new JLabel(txt);
lb.setFont(new Font(f.getNomFont(font),Font.ITALIC,tail));
lb.setForeground(coul);
return(lb);
}
/////////////////////////////////////
Ben pour le s1=n ew JLabel();
car vu qu'il ne rafraichi pas le JLabel dc je le supprime et je créer un autre au meme emplacement....
Mon Panel je l'ai crée avec le méthode paint car y'a un dession comme fond...
Pour un JPanel standard ca marche...
C'est trops bizzare tout ca et ca me fait du retard....
MERCI
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Ben le setText raffraichit bien le JLabel, il y a pas de problème à ce niveau là (en tout cas, dans tout mes projets, j'ai jamais eu de problèmes pour raffraichir un label !)

_

<spa></spa>
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Ja rejoint darksidious perso je n'ai jamais eu de problème avec les JLabel qu'il soit dans une JFrame, un JPanel, un JTree.....




WORA
Messages postés
149
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
19 janvier 2009

Alors vs pensez que pt etre l'environement n'est pas bien...
J'utilise le JBuilder....
D'ailleurs j'ia trouvé qu'il y'a des trucs bizzare comme le SetIcon il ne trouve jamais l'image pourtant avec NetBeans ca marche...
Doit je changer .????
Car vraiment ca fait 1 semaine que je susi sur ce probléme...
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,



je ne pense pas que l'environement change quelque chose........

mais si à mes yeux seul eclipse reste le seul super ide digne de ce nom mais bon les goûts et les couleurs.......



a mon avis le problème est plus basé sur ton code tout peux joué sur
ton problème, voici un exemple simple qui fonctionne donc a toi
de voir comment l'adapter :



voici le panel qui contient l'image


import java.awt.Graphics;

import java.awt.Image;



import javax.swing.JPanel;



public class PanelImage extends JPanel{



private static final long serialVersionUID = 767464606737125113L;



public Image background = null;



public PanelImage(String image){

super();

background = getToolkit().getImage(image);

}



public void paintComponent(Graphics g){

g.clearRect(0, 0, getSize().width, getSize().height);

if(background != null)

g.drawImage(background, 0, 0, this);

super.paintComponents(g);

}

}



maintenant la fenetre



import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;



import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JButton;

import javax.swing.JOptionPane;

import javax.swing.SwingUtilities;



public class Test extends JFrame implements ActionListener{



private static final long serialVersionUID = 7654152022094793630L;



private PanelImage panelImage = null;



private JLabel jLabel1 = null;



private JLabel jLabel2 = null;



private JButton jButton1 = null;



private JButton jButton2 = null;



public static void main(String [] args){

SwingUtilities.invokeLater(new Runnable(){

public void run(){

new Test().setVisible(true);

}

});

}



public Test() {

super();

initialize();

}



private void initialize() {

setSize(300, 200);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLocationRelativeTo(null);

setContentPane(getPanelImage());

setTitle("JLabel Test");

}



private PanelImage getPanelImage() {

if (panelImage == null) {

panelImage = new PanelImage("background.jpg");

panelImage.setLayout(new GridLayout(2, 2));

panelImage.add(getJLabel1(), null);

panelImage.add(getJLabel2(), null);

panelImage.add(getJButton1(), null);

panelImage.add(getJButton2(), null);

}

return panelImage;

}



private JLabel getJLabel1(){

if(jLabel1 == null){

jLabel1 = new JLabel();

jLabel1.setText("JLabel 1");

jLabel1.setForeground(Color.RED.darker());

jLabel1.setBorder(BorderFactory.createEtchedBorder());

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

}

return jLabel1;

}



private JLabel getJLabel2(){

if(jLabel2 == null){

jLabel2 = new JLabel();

jLabel2.setText("JLabel 2");

jLabel2.setForeground(Color.BLUE.darker());

jLabel2.setBorder(BorderFactory.createEtchedBorder());

jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

}

return jLabel2;

}



private JButton getJButton1() {

if (jButton1 == null) {

jButton1 = new JButton();

jButton1.setText("Change label1");

jButton1.addActionListener(this);

}

return jButton1;

}



private JButton getJButton2() {

if (jButton2 == null) {

jButton2 = new JButton();

jButton2.setText("Change label2");

jButton2.addActionListener(this);

}

return jButton2;

}



public void actionPerformed(ActionEvent e) {

if(e.getSource().equals(getJButton1())){

String ret =
JOptionPane.showInputDialog(this, "Saisir le nouveau texte du label 1",
"nouveau text");

if(ret != null && ret.trim().compareTo("") != 0)

getJLabel1().setText(ret);

}

if(e.getSource().equals(getJButton2())){

String ret =
JOptionPane.showInputDialog(this, "Saisir le nouveau texte du label 2",
"nouveau text");

if(ret != null && ret.trim().compareTo("") != 0)

getJLabel2().setText(ret);

}

}

}






WORA