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

kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009 - 2 mars 2006 à 17:47
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 3 mars 2006 à 01:05
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....
A voir également:

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
2 mars 2006 à 18:23
Pourquoi donc détruire et recréer tes JLabel à chaque fois ??

_

<spa></spa>
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
2 mars 2006 à 19:26
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?
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 mars 2006 à 20:45
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
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
2 mars 2006 à 21:33
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
2 mars 2006 à 21:47
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>
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 mars 2006 à 22:22
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
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
3 mars 2006 à 00:01
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...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 mars 2006 à 01:05
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
0
Rejoignez-nous