Date sent: Tue, 14 Aug 2001 09:46:13 +0200
From: Eric MOREL <eric.morel@aql.fr>
Organization: AQL (Groupe Silicomp)
To: java@u-strasbg.fr
Subject: Pb avec setSize() sur des composants graphiques.
Send reply to: java@u-strasbg.fr
Bonjour,
Je n'arrive pas à redessiner des composants avec la fonction setSize().
J'ai un GridLayout dans une frame. Chaque élément du GridLayout est un
Panel contenant différent Layout. J'ai mis le code d'un élément que je
veux redimmensionner :
FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
Panel pList = new Panel(myLayout4);
List lDay=new List(2);
lDay.setSize(50,54);
lDay.addItem("Lundi");
...
lDay.addItem("Dimande");
pList.add(lDay);
Je suppose que c'est un problème de rafraîchissement mais j'ai tout
essayé sans résultat (validate(), setVisible(),...)
Merci pour votre aide.
Eric
From: "Jean-Paul Bonvini" <jpbonvini@vitamib.com>
To: <java@u-strasbg.fr>
Subject: Re: Pb avec setSize() sur des composants graphiques.
Date sent: Tue, 14 Aug 2001 09:57:16 +0200
Send reply to: java@u-strasbg.fr
Il faut peut etre essayer de faire un invalidate(), suivi d'un validate().
jinpol
----- Original Message -----
From: "Eric MOREL" <eric.morel@aql.fr>
To: <java@u-strasbg.fr>
Sent: Tuesday, August 14, 2001 9:46 AM
Subject: Pb avec setSize() sur des composants graphiques.
Bonjour,
Je n'arrive pas à redessiner des composants avec la fonction setSize().
J'ai un GridLayout dans une frame. Chaque élément du GridLayout est un
Panel contenant différent Layout. J'ai mis le code d'un élément que je
veux redimmensionner :
FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
Panel pList = new Panel(myLayout4);
List lDay=new List(2);
lDay.setSize(50,54);
lDay.addItem("Lundi");
...
lDay.addItem("Dimande");
pList.add(lDay);
Je suppose que c'est un problème de rafraîchissement mais j'ai tout
essayé sans résultat (validate(), setVisible(),...)
Merci pour votre aide.
Eric
From: Arnaud de la Sudrie <adelasudrie@phonevalley.com>
To: <java@u-strasbg.fr>
Subject: RE: Pb avec setSize() sur des composants graphiques.
Date sent: Tue, 14 Aug 2001 09:59:36 +0200
Send reply to: java@u-strasbg.fr
tu peux essayer de faire un lDay.setPreferredSize(50,54) (valable à partir
du JDK 1.2 je crois)
Arnaud
-----Message d'origine-----
De : Jean-Paul Bonvini [mailto:jpbonvini@vitamib.com]
Envoyé : mardi 14 août 2001 09:57
À : java@u-strasbg.fr
Objet : Re: Pb avec setSize() sur des composants graphiques.
Il faut peut etre essayer de faire un invalidate(), suivi d'un validate().
jinpol
----- Original Message -----
From: "Eric MOREL" <eric.morel@aql.fr>
To: <java@u-strasbg.fr>
Sent: Tuesday, August 14, 2001 9:46 AM
Subject: Pb avec setSize() sur des composants graphiques.
Bonjour,
Je n'arrive pas à redessiner des composants avec la fonction setSize().
J'ai un GridLayout dans une frame. Chaque élément du GridLayout est un
Panel contenant différent Layout. J'ai mis le code d'un élément que je
veux redimmensionner :
FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
Panel pList = new Panel(myLayout4);
List lDay=new List(2);
lDay.setSize(50,54);
lDay.addItem("Lundi");
...
lDay.addItem("Dimande");
pList.add(lDay);
Je suppose que c'est un problème de rafraîchissement mais j'ai tout
essayé sans résultat (validate(), setVisible(),...)
Merci pour votre aide.
Eric
Date sent: Tue, 14 Aug 2001 10:20:14 +0200
From: Eric MOREL <eric.morel@aql.fr>
Organization: AQL (Groupe Silicomp)
To: java@u-strasbg.fr
Subject: Re: Pb avec setSize() sur des composants graphiques.
Send reply to: java@u-strasbg.fr
Je suis contraint au JDK1.1.8 donc je ne peux pas utiliser
setPreferredSize() qui est utilisé par les composants Swing. J'ai essayé
cela sans résultat :
FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
Panel pList = new Panel(myLayout4);
List lDay=new List(2);
lDay.addItem("Lundi");
...
lDay.addItem("Dimanche");
lDay.setSize(50,54);
lDay.invalidate();
lDay.validate();
pList.add(lDay);
Ai-je fait une erreur ?
Merci
Jean-Paul Bonvini a écrit :
> Il faut peut etre essayer de faire un invalidate(), suivi d'un
> validate().
>
> jinpol
>
> ----- Original Message -----
> From: "Eric MOREL" <eric.morel@aql.fr>
> To: <java@u-strasbg.fr>
> Sent: Tuesday, August 14, 2001 9:46 AM
> Subject: Pb avec setSize() sur des composants graphiques.
>
> Bonjour,
>
> Je n'arrive pas à redessiner des composants avec la fonction setSize().
> J'ai un GridLayout dans une frame. Chaque élément du GridLayout est un
> Panel contenant différent Layout. J'ai mis le code d'un élément que je
> veux redimmensionner :
>
> FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
> Panel pList = new Panel(myLayout4);
> List lDay=new List(2);
> lDay.setSize(50,54);
> lDay.addItem("Lundi");
> ...
> lDay.addItem("Dimande");
> pList.add(lDay);
>
> Je suppose que c'est un problème de rafraîchissement mais j'ai tout
> essayé sans résultat (validate(), setVisible(),...)
>
> Merci pour votre aide.
>
> Eric
From: "Herve AGNOUX" <hagnoux@mail.club-internet.fr>
To: java@u-strasbg.fr
Date sent: Tue, 14 Aug 2001 10:57:55 +0200
Subject: Re: Pb avec setSize() sur des composants graphiques.
Priority: normal
Send reply to: java@u-strasbg.fr
Le 14 Aug 01, Eric MOREL a écrit :
> Bonjour,
>
> Je n'arrive pas à redessiner des composants avec la fonction setSize().
> J'ai un GridLayout dans une frame. Chaque élément du GridLayout est un
> Panel contenant différent Layout. J'ai mis le code d'un élément que je
> veux redimmensionner :
>
Couramment c'est le layout qui affecte une taille aux composants,
pas le setSize. Le GridLayout, en particulier, divise le panel en
cases égales, et donne à chaque composant la taille qui va bien
pour entrer dans sa case.
Chaque layout a ses propres méthodes pour affecter une taille aux
composants, et c'est un peu la barbe pour décourvrir les us et
coutumes de chacun.
Quelques pistes :
* Si tu a un panel dont tu veux absolument controler ce qui se
passe dedans, supprime le layout (déconseillé par les afficionados)
* invente ton propre layout (très classe)
* débrouilles-toi avec les layouts qui tolèrent une certaine initiative
chez le programmeurs (fatiguant) : BoxLayout, GridBagLayout
* avec swing, découvre le plaisir de jouer avec setMinimumSize,
setMaximumSize, setPreferredSize... et setSize, bien sûr, et les
différentes et très passionnants effets en fonction des layouts
(génial).
Moi j'essaie de tout faire avec BoxLayout et BorderLayout. J'arrive
à des trucs pas mal (me semble-t-il). Il parait aussi que les "IDE"
sont très utiles, je le crois facilement.
A+.
--
Hervé AGNOUX hagnoux@mail.club-internet.fr
Faites vos sites avec des formulaires électroniques :
http://www.diaam.com
Date sent: Tue, 14 Aug 2001 11:13:30 +0200
From: Jerome Moliere <moliere@viveo-montpellier.com>
To: java@u-strasbg.fr
Subject: Re: Pb avec setSize() sur des composants graphiques.
Send reply to: java@u-strasbg.fr
>
>
>Moi j'essaie de tout faire avec BoxLayout et BorderLayout. J'arrive à des
>trucs pas mal (me semble-t-il). Il parait aussi que les "IDE" sont très
>utiles, je le crois facilement.
>
si tu fais allusion au code debile genere par JBuilder via son XYlayout,
je ne sais pas si on peut appeler ca utile...
Jerome
>
From: "Jean-Paul Bonvini" <jpbonvini@vitamib.com>
To: <java@u-strasbg.fr>
Subject: Re: Pb avec setSize() sur des composants graphiques.
Date sent: Tue, 14 Aug 2001 12:37:54 +0200
Send reply to: java@u-strasbg.fr
je pense qu'il faut faire le invalidate() et le validate() sur pList
plutot que sur lDay, et qu'il faut le faire apres le pList.add(lDay).
jinpol
----- Original Message -----
From: "Eric MOREL" <eric.morel@aql.fr>
To: <java@u-strasbg.fr>
Sent: Tuesday, August 14, 2001 10:20 AM
Subject: Re: Pb avec setSize() sur des composants graphiques.
Je suis contraint au JDK1.1.8 donc je ne peux pas utiliser
setPreferredSize()
qui est utilisé par les composants Swing. J'ai essayé cela sans résultat :
FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
Panel pList = new Panel(myLayout4);
List lDay=new List(2);
lDay.addItem("Lundi");
...
lDay.addItem("Dimanche");
lDay.setSize(50,54);
lDay.invalidate();
lDay.validate();
pList.add(lDay);
Ai-je fait une erreur ?
Merci
Jean-Paul Bonvini a écrit :
> Il faut peut etre essayer de faire un invalidate(), suivi d'un
> validate().
>
> jinpol
>
> ----- Original Message -----
> From: "Eric MOREL" <eric.morel@aql.fr>
> To: <java@u-strasbg.fr>
> Sent: Tuesday, August 14, 2001 9:46 AM
> Subject: Pb avec setSize() sur des composants graphiques.
>
> Bonjour,
>
> Je n'arrive pas à redessiner des composants avec la fonction setSize().
> J'ai un GridLayout dans une frame. Chaque élément du GridLayout est un
> Panel contenant différent Layout. J'ai mis le code d'un élément que je
> veux redimmensionner :
>
> FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
> Panel pList = new Panel(myLayout4);
> List lDay=new List(2);
> lDay.setSize(50,54);
> lDay.addItem("Lundi");
> ...
> lDay.addItem("Dimande");
> pList.add(lDay);
>
> Je suppose que c'est un problème de rafraîchissement mais j'ai tout
> essayé sans résultat (validate(), setVisible(),...)
>
> Merci pour votre aide.
>
> Eric
From: "Herve AGNOUX" <hagnoux@mail.club-internet.fr>
To: java@u-strasbg.fr
Date sent: Tue, 14 Aug 2001 14:25:21 +0200
Subject: Re: Pb avec setSize() sur des composants graphiques.
Priority: normal
Send reply to: java@u-strasbg.fr
Le 14 Aug 01, Eric MOREL a écrit :
> Je suis contraint au JDK1.1.8 donc je ne peux pas utiliser
> setPreferredSize() qui est utilisé par les composants Swing. J'ai essayé
Tu peux utiliser swing avec le jdk1.1.8, heureusement (pour moi). Il y a
un jar qui va bien en téléchargement sur le site de sun.
> cela sans résultat :
> FlowLayout myLayout4 = new FlowLayout(FlowLayout.CENTER,0,0);
> Panel pList = new Panel(myLayout4);
> List lDay=new List(2);
> lDay.addItem("Lundi");
> ...
> lDay.addItem("Dimanche");
> lDay.setSize(50,54);
> lDay.invalidate();
> lDay.validate();
> pList.add(lDay);
>
> Ai-je fait une erreur ?
>
Pour preuve que l'on peut utiliser swing : je peux pas te répondre.
List est un composant natif, et je n'utilise plus que des
composants légers... Merci, swing !
--
Hervé AGNOUX hagnoux@mail.club-internet.fr
Faites vos sites avec des formulaires électroniques :
http://www.diaam.com
Subject: Re: Pb avec setSize() sur des composants graphiques
To: java@u-strasbg.fr
Date sent: Tue, 14 Aug 2001 13:44:00 +0100
From: GWENAEL ROUGE <Gwenael.Rouge.1@etumail.uhp-nancy.fr>
Send reply to: java@u-strasbg.fr
Je pense que tu as raison. La solution qui offre la plus grande souplesse
(c'est toi qui choisis la taille et la localisation de chaque composant),
c'est de ne pas utiliser de LayoutManager (malheureusement, ce n'est
peut-être pas la plus simple !). Il ne s'agit pas du "XYLayout" (que je ne
connait pas). Tu insère des Panel dans les cases de GridLayout et tu leur
affecte un Layout NULL. Puis tu dessine tes composant a souhait avec la
méthode setBounds()(ou peut-être reshape() sur JDK 1.1):
Panel pList = new Panel();
lList.setLayout(null);
List lDay=new List(2);
lDay.setBounds(x,y,50,54);
lDay.addItem("Lundi");
...
lDay.addItem("Dimande");
pList.add(lDay);
ATTENTION: pour les paramètres x et y, qui indiquent les coordonnées du
coin supérieur gauche du composant, l'origine du repère, c'est le coin
supérieur gauche de ton Frame: il va donc falloir bien calculer la
localisation de chaque composant !! En fait, dans la pratique, on peut
organiser les composants en grille sans qu'ils aient tous la même taille.
L'utilisation de tes Panels organisés en GridLayout n'est donc plus
nécessaire.
Date sent: Tue, 14 Aug 2001 17:05:35 +0200
From: Eric MOREL <eric.morel@aql.fr>
Organization: AQL (Groupe Silicomp)
To: java@u-strasbg.fr
Subject: Re: Pb avec setSize() sur des composants graphiques
Send reply to: java@u-strasbg.fr
J'ai testé cette méthode et elle fonctionne. Merci.
Je dois supprimer tous les Layout, je ne travaille qu'avec un panel et je
fixe toutes les tailles de mes composants à la main. Y-a-t-il des pbs de
portabilité et de gestion lors de la modification des tailles des fenêtres
par l'utilisateur ?
Eric
GWENAEL ROUGE a écrit :
> Je pense que tu as raison. La solution qui offre la plus grande
> souplesse (c'est toi qui choisis la taille et la localisation de chaque
> composant), c'est de ne pas utiliser de LayoutManager (malheureusement,
> ce n'est peut-être pas la plus simple !). Il ne s'agit pas du "XYLayout"
> (que je ne connait pas). Tu insère des Panel dans les cases de
> GridLayout et tu leur affecte un Layout NULL. Puis tu dessine tes
> composant a souhait avec la méthode setBounds()(ou peut-être reshape()
> sur JDK 1.1):
>
> Panel pList = new Panel();
>
> lList.setLayout(null);
>
> List lDay=new List(2);
> lDay.setBounds(x,y,50,54);
> lDay.addItem("Lundi");
> ...
> lDay.addItem("Dimande");
> pList.add(lDay);
>
> ATTENTION: pour les paramètres x et y, qui indiquent les coordonnées du
> coin supérieur gauche du composant, l'origine du repère, c'est le coin
> supérieur gauche de ton Frame: il va donc falloir bien calculer la
> localisation de chaque composant !! En fait, dans la pratique, on peut
> organiser les composants en grille sans qu'ils aient tous la même
> taille. L'utilisation de tes Panels organisés en GridLayout n'est donc
> plus nécessaire.
Date sent: Tue, 14 Aug 2001 17:09:07 +0200
From: Jerome Moliere <moliere@viveo-montpellier.com>
To: java@u-strasbg.fr
Subject: Re: Pb avec setSize() sur des composants graphiques
Send reply to: java@u-strasbg.fr
Eric MOREL wrote:
>J'ai testé cette méthode et elle fonctionne. Merci.
>Je dois supprimer tous les Layout, je ne travaille qu'avec un panel et je
>fixe toutes les tailles de mes composants à la main. Y-a-t-il des pbs de
>portabilité et de gestion lors de la modification des tailles des
>fenêtres par l'utilisateur ?
>
beinh oui et c'est bien pour ca que même en VB les IHMS ne sont plus
faites comme ca et que tout le monde utilise des layouts managers... si
par exemple tu developpes une appli sur un ecran en 800*600 et que ton
utilisateur ne possede qu'un vieil ecran avec une sale carte graphique en
640*480, il ne pourra jamais valider la saisie de telle ou telle dialogue,
etant donné que le bouton ne sera pas visible...(cela m'est arrivé il y a
environ 6 ans de cela en VB!!!) même si les layout managers sont
difficiles a coder(c'est vrai),je crois que le jeu en vaut la
chandelle!!!! comment simuler une politique de retaillement des fenetres
avec un hard-coding des dimensions? si dimension == ca alors
ceci....inimaginable avec un gridbaglayout c'est naturel....
a ta dispo
Jerome
From: "Cedric Beust" <cedric@beust.com>
To: <java@u-strasbg.fr>
Subject: RE: Pb avec setSize() sur des composants graphiques.
Date sent: Tue, 14 Aug 2001 08:12:00 -0700
Send reply to: java@u-strasbg.fr
> From: Jerome Moliere [mailto:moliere@viveo-montpellier.com]
> >Moi j'essaie de tout faire avec BoxLayout et BorderLayout. J'arrive à
> >des trucs pas mal (me semble-t-il). Il parait aussi que les "IDE" sont
> >très utiles, je le crois facilement.
> >
> si tu fais allusion au code debile genere par JBuilder via son XYlayout,
> je ne sais pas si on peut appeler ca utile...
Tu peux convertir ce layout en GridBagLayout par la suite, mais le
resultat n'est quand meme pas tres professionnel (et assez imprevisible,
comme c'est en general le cas avec le GridBagLayout).
Mon experience avec les builders d'interface Swing m'a appris que c'est
pratique pour dessiner des interfaces rapidement, mais si tu veux les
inclure dans un produit, mieux vaut ecrire le code a la main (ou
copier/coller ce que le builder a genere).
Quelques raisons:
- Difficile (voire impossible) de partager le code de panels avec un
Builder. Tout ce que tu peux faire, c'est copier/coller le composant, ce
qui est franchement horrible. Je voudrais creer un CedricPanel et pouvoir
l'inserer dans diverses fenetres. Aucun builder ne sait faire ca
- Gros problemes de partage de code avec une equipe. Il est deconseille
de "check in" du code genere, voire le .prj de ton IDE. Quand des
conflits d'edition apparaissent, il est quasiment impossible de les regler
vu que le code a ete genere
- Personnellement, j'utilise beaucoup mon propre LayoutManager
(PercentageLayout) et quelques variantes (genre une version specialisee
qui ne redimensionne pas les TextFields verticalement, etc...)
A part ca, j'aime beaucoup JBuilder, mais pas pour les interfaces.
--
Cedric
Date sent: Tue, 14 Aug 2001 17:21:01 +0200
From: Jerome Moliere <moliere@viveo-montpellier.com>
To: java@u-strasbg.fr
Subject: Re: Pb avec setSize() sur des composants graphiques.
Send reply to: java@u-strasbg.fr
>
>
>Tu peux convertir ce layout en GridBagLayout par la suite, mais le
>resultat n'est quand meme pas tres professionnel (et assez imprevisible,
>comme c'est en general le cas avec le GridBagLayout).
>
il parait même si je n'ai jamais experimente...
>
>Mon experience avec les builders d'interface Swing m'a appris que c'est
>pratique pour dessiner des interfaces rapidement, mais si tu veux les
>inclure dans un produit, mieux vaut ecrire le code a la main (ou
>copier/coller ce que le builder a genere).
>
surement...OK a 100%
il y avait une applet dans le temps qui aidait a la generation de
GridBagLayout, un truc du genre GridBagMaster ...tres pratique, au moins
pour les debutants rebutes par ce LM tres exigeant..moi je n'utilise
quasiment que celui-là conjugué avec le BorderLayout...
>
>
>A part ca, j'aime beaucoup JBuilder, mais pas pour les interfaces.
>
moi je l'evite comme la peste mais chacun ses gouts, ce n'etait pas un
troll mais un constat!!
Jerome