Les Allergies
Alimentaires
Posez votre question Signaler

Interface graphique en java [Résolu]

loops - Dernière réponse le 1 avril 2008 à 00:36
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
Lire la suite 

Interface graphique en java »

14 réponses
Réponse
+4
moins plus
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.

@++
loops - 18 avril 2005 à 17:42
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
@+
kij_82- 19 avril 2005 à 21:29
Tu l'a bien mise au bon endroit ? fais voir ton code.
Ajouter un commentaire
Réponse
+2
moins plus
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 ...
Ajouter un commentaire
Réponse
+1
moins plus
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
@+
kij_82- 19 avril 2005 à 23:03
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());

Ajouter un commentaire
Réponse
+1
moins plus
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
@+
kij_82- 24 avril 2005 à 14:38
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
Ajouter un commentaire
Réponse
+1
moins plus
salut
des cours sur interface graphique en langage java
Ajouter un commentaire
Réponse
+1
moins plus
aze
Ajouter un commentaire
Réponse
+0
moins plus
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

@+
kij_82- 21 avril 2005 à 18:55
De rien, j'ai galérer la dessus ya qq mois...

Ca fait plaisir de rendre service !
++
Loops - 22 avril 2005 à 00:14
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!!
kij_82kij_82 - 22 avril 2005 à 10:11
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.

++
Ajouter un commentaire
Ce document intitulé « interface graphique en java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?