Interface graphique en java [Résolu/Fermé]

Signaler
-
 NakNak -
salut tout le monde,

tout d abord, le programme est en java
ensuite, j ai une fenetre graphique contenant un textfield, un bouton et une jinternalframe.
l utilisateur rentre une serie de chiffre. losque qu il clic sur le bouton un graphique s affiche dans la jInternalFrame correspondant aux valeurs du textfield.
la premiere fois le graphique s affiche bien (grace a la methhode updateUI() qui permet d actualise). mais si je rentre une autre serie de chiffres et que je reclic sur le bouton, le graphique ne se reactualise pas .j ai aussi essayer avec la methode repaint mais sans succes

j ai alors inserer un autre textfield ou je lis la valeur rentree dans le premier textfield (pou verifier): le changement s'effectue bien dans la textfield mais pas dans la jinternalfraME

comment faire
merci @+
loops

7 réponses

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851
J'ai moi même galéré pendant 15 plombe pour trouver alors voici un petit coup de pouce :
Utilise la fonction revalidate comme cela :

Jpanel pane = new Jpanel();
....
Traitements
....

pane.revalidate();

Cette méthode permet d'indiquer au thread qui s'occupe de la gestion des evenements du java, qu'il faut actualiser le composant 'pane'.
Pour une frame ou une internaleFrame je pense que ca doit être la même méthode puisqu'il s'agit d'un composant de ta fenetre principale.

Voilà, redi moi ca.

@++
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

salut kij_82 et merci pour ta reponse,

j ai tout de suite teste ta solution. revalidate() exit bien avec ma jinternalframe mais elle ne s actualise tjrs po.
c est a ni rien comprendre!!!

auriez vous une autre solution?

merci
@+
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851
Tu l'a bien mise au bon endroit ? fais voir ton code.
Si setSize ne marche pas, essaye : this.setPreferedSize(new Dimension(400, 300))
Des fois ça marche mieux ... mais j'vais pas donner trop d'aide, j'trouve le java assez lourd pour tout ça ...
salut,
bha je pense bien :


Canvas c = new repere(tabBin, compteur);
jInternalFrame1.restoreSubcomponentFocus();

jInternalFrame1.getContentPane().add(c);

jInternalFrame1.paint(c.getGraphics());

jInternalFrame1.revalidate();
jInternalFrame1.updateUI();

jInternalFrame1.repaint();

ca, ca se trouve dans le actionperformed du bouton.
repere construit mon graphique apres je le fou dans la frame et j actualise. mais ca marche qu une seule fois, le graphe ne se redessine pas.

merci
@+
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851
Essaie ca entre tes lignes déjà écrites pour voir :

Canvas c = new repere(tabBin, compteur);
jInternalFrame1.restoreSubcomponentFocus();


jInternalFrame1.getContentPane().removeAll();

jInternalFrame1.getContentPane().add(c);

jInternalFrame1.paint(c.getGraphics());

yop yop kij_82

voila le debut de la classe avec les constructeur et une methode qui initialise la fenetre. mais je pense que le setSize() n est pas pris en compte. car qd le prog se lance il se lance pas en plain ecran!


public class tp2 extends javax.swing.JFrame {

public tp2() {
initfenetre();
initComponents();

}

private void initfenetre(){
Toolkit k = Toolkit.getDefaultToolkit();
Dimension tailleEcran = k.getScreenSize();
// int largeurEcran = tailleEcran.width;
//int hauteurEcran = tailleEcran.height;

setTitle("Encodage");
setSize(tailleEcran);
setLocation(80,80);
}


merci
@+
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851
Essay un "setsize(700,1024);" à la place, et si ca change qqchose, alors c'est que tu emplois mal la classe toolkit. Je peux pas t'en dire plus car je ne connais pas cette classe et je n'ai pas le temps pour le moment d'y jeter un coup d'oeil, même bref alors ...

Bonne recherche
salut
des cours sur interface graphique en langage java
yop kij_82

merci pour ta reponse. je viens de tester et ca marche super bien

c cool, trop bien!!!!!

c est qd meme agreable ca, tu poses des questions, on trouve pas du premier coup, pis enfin apres une plus mure reflexion y a tt qui fonctionne. moi je dis c est de la balle

encore merci a kij_82

@+
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851
De rien, j'ai galérer la dessus ya qq mois...

Ca fait plaisir de rendre service !
++
>
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013

re kij_82
toi qui a l air de te demerder et de repondre a plein de questions

est ce que tu sais comment faire pour qu a l execution du programme ma fenetre et une taille bien definie?

g pourtant essaye de faire un setSize() mais il n etait po pris en commpte
j utilise netbeen et dans les preference de la fenetre je peux normalement regler la taille mais la case se trouve etre en grisee donc impossible de changer ma valeur et je pense que c est pour cette raison que le setSize() n est pas pris en compte!!

ca t es jamais arrive ca?? ce serai cool en tt cas ;-)

aller @+ et merci encore ca fait bien plaisir d avoir a faire a des gars comme toi!!
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851 >
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013

Met voir ton code de début, je veux dire celui de ta fenetre globale.

Est-ce que ta classe principale étant la classe JFrame ? Si non alors il faut qu'elle étande la classe JFrame, et dans le constructeur, tu met le
setsize(HAUT,LARG);

Que tu fais déjà, avec HAUT et LARG qui sont des attribut constant de ta classe :
private static final int HAUT = 700;
private static final int LARG = 1024;


Voilà, redit moi ca.

++