j'ai une classe qui =E9tend JComboBox pour faire apparaitre un popup=20
sp=E9cifique contenant diff=E9rents composants (comme un calendrier par=20
exemple).
Pour afficher le popup avec le bon L&F, j'ai le code suivant:
if(ui instanceof MetalComboBoxUI) {
ui =3D new MetalTypeComboBoxUI();
} else if(ui instanceof MotifComboBoxUI) {
ui =3D new MotifTypeComboBoxUI();
} else if(ui instanceof WindowsComboBoxUI) {
cui =3D new WindowsTypeComboBoxUI();
} else ...
setUI(ui);
}
avec une classe par L&F support=E9:
class MetalTypeComboBoxUI extends MetalComboBoxUI {
protected ComboPopup createPopup() {
return new TypePopup(comboBox);
}
}
Ma question est la suivante: je d=E9veloppe sous XP, comment puis-je=20
supporter le L&F du mac, sachant que les classes associ=E9es n'existe que=
=20
quand on est sur un mac ?
Merci d'avance
Armel, qui en a marre des probl=E8mes de compatibilit=E9s inter OS
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cedric Lefebvre
Je ne comprends pas la necessite d'implementer updateUI dans ton composant. Comme tu derives de JComboBox, par defaut, ton composant utilisera l'UIComponent utilise par JComboBox (MetalComboBoxUI par exemple). Dans 99% des cas, tu dois pouvoir reutiliser les UIComponent existant (meme pour afficher des dates). Et si ce n'est pas le cas, c'est plus un probleme de design que d'implementation. C'est en tous cas ce que je te conseillerai de faire.
Ensuite, pour repondre precisemment a ta question : ce n'est pas la bonne maniere de proceder que de faire des setUI dans l'updateUI. Ce que tu veux faire consiste en fait a etendre les L&F existants... donc ne bidouille pas pour les etendre sans les etendre mais etend les reellement en definissant tes classes UIComponent dans la classe L&F. C'est la solution propre.
Cedric Lefebvre
"Armel HERVE" wrote in message news: Bonjour à tous,
j'ai une classe qui étend JComboBox pour faire apparaitre un popup spécifique contenant différents composants (comme un calendrier par exemple).
Pour afficher le popup avec le bon L&F, j'ai le code suivant:
if(ui instanceof MetalComboBoxUI) { ui = new MetalTypeComboBoxUI(); } else if(ui instanceof MotifComboBoxUI) { ui = new MotifTypeComboBoxUI(); } else if(ui instanceof WindowsComboBoxUI) { cui = new WindowsTypeComboBoxUI(); } else ...
setUI(ui); }
avec une classe par L&F supporté: class MetalTypeComboBoxUI extends MetalComboBoxUI {
protected ComboPopup createPopup() { return new TypePopup(comboBox); } }
Ma question est la suivante: je développe sous XP, comment puis-je supporter le L&F du mac, sachant que les classes associées n'existe que quand on est sur un mac ?
Merci d'avance
Armel, qui en a marre des problèmes de compatibilités inter OS
Je ne comprends pas la necessite d'implementer updateUI dans ton composant.
Comme tu derives de JComboBox, par defaut, ton composant utilisera
l'UIComponent
utilise par JComboBox (MetalComboBoxUI par exemple).
Dans 99% des cas, tu dois pouvoir reutiliser les UIComponent existant (meme
pour
afficher des dates). Et si ce n'est pas le cas, c'est plus un probleme de
design que
d'implementation.
C'est en tous cas ce que je te conseillerai de faire.
Ensuite, pour repondre precisemment a ta question : ce n'est pas la bonne
maniere
de proceder que de faire des setUI dans l'updateUI.
Ce que tu veux faire consiste en fait a etendre les L&F existants... donc ne
bidouille
pas pour les etendre sans les etendre mais etend les reellement en
definissant
tes classes UIComponent dans la classe L&F. C'est la solution propre.
Cedric Lefebvre
"Armel HERVE" <armel.herve.enlever_ceci@netcourrier.com> wrote in message
news:MPG.1b577d793bda9177989692@news.free.fr...
Bonjour à tous,
j'ai une classe qui étend JComboBox pour faire apparaitre un popup
spécifique contenant différents composants (comme un calendrier par
exemple).
Pour afficher le popup avec le bon L&F, j'ai le code suivant:
if(ui instanceof MetalComboBoxUI) {
ui = new MetalTypeComboBoxUI();
} else if(ui instanceof MotifComboBoxUI) {
ui = new MotifTypeComboBoxUI();
} else if(ui instanceof WindowsComboBoxUI) {
cui = new WindowsTypeComboBoxUI();
} else ...
setUI(ui);
}
avec une classe par L&F supporté:
class MetalTypeComboBoxUI extends MetalComboBoxUI {
protected ComboPopup createPopup() {
return new TypePopup(comboBox);
}
}
Ma question est la suivante: je développe sous XP, comment puis-je
supporter le L&F du mac, sachant que les classes associées n'existe que
quand on est sur un mac ?
Merci d'avance
Armel, qui en a marre des problèmes de compatibilités inter OS
Je ne comprends pas la necessite d'implementer updateUI dans ton composant. Comme tu derives de JComboBox, par defaut, ton composant utilisera l'UIComponent utilise par JComboBox (MetalComboBoxUI par exemple). Dans 99% des cas, tu dois pouvoir reutiliser les UIComponent existant (meme pour afficher des dates). Et si ce n'est pas le cas, c'est plus un probleme de design que d'implementation. C'est en tous cas ce que je te conseillerai de faire.
Ensuite, pour repondre precisemment a ta question : ce n'est pas la bonne maniere de proceder que de faire des setUI dans l'updateUI. Ce que tu veux faire consiste en fait a etendre les L&F existants... donc ne bidouille pas pour les etendre sans les etendre mais etend les reellement en definissant tes classes UIComponent dans la classe L&F. C'est la solution propre.
Cedric Lefebvre
"Armel HERVE" wrote in message news: Bonjour à tous,
j'ai une classe qui étend JComboBox pour faire apparaitre un popup spécifique contenant différents composants (comme un calendrier par exemple).
Pour afficher le popup avec le bon L&F, j'ai le code suivant:
if(ui instanceof MetalComboBoxUI) { ui = new MetalTypeComboBoxUI(); } else if(ui instanceof MotifComboBoxUI) { ui = new MotifTypeComboBoxUI(); } else if(ui instanceof WindowsComboBoxUI) { cui = new WindowsTypeComboBoxUI(); } else ...
setUI(ui); }
avec une classe par L&F supporté: class MetalTypeComboBoxUI extends MetalComboBoxUI {
protected ComboPopup createPopup() { return new TypePopup(comboBox); } }
Ma question est la suivante: je développe sous XP, comment puis-je supporter le L&F du mac, sachant que les classes associées n'existe que quand on est sur un mac ?
Merci d'avance
Armel, qui en a marre des problèmes de compatibilités inter OS
Armel HERVE
In article <40f2e9d2$0$7726$, says...
Je ne comprends pas la necessite d'implementer updateUI dans ton composan t. Comme tu derives de JComboBox, par defaut, ton composant utilisera l'UIComponent utilise par JComboBox (MetalComboBoxUI par exemple). Le problème est bien là: comment utiliser le L&F par défaut du syst ème ?
Dans 99% des cas, tu dois pouvoir reutiliser les UIComponent existant (me me pour afficher des dates). Et si ce n'est pas le cas, c'est plus un probleme de design que d'implementation. C'est en tous cas ce que je te conseillerai de faire. Je me suis mal exprimé: quand on clique sur la combo, son popup contient
un calendrier, ce qui n'est pas une liste, c'est pour cela que je redéfinis la façon d'afficher le popup.
Ensuite, pour repondre precisemment a ta question : ce n'est pas la bonne maniere de proceder que de faire des setUI dans l'updateUI. Ce que tu veux faire consiste en fait a etendre les L&F existants... donc ne bidouille pas pour les etendre sans les etendre mais etend les reellement en definissant tes classes UIComponent dans la classe L&F. C'est la solution propre.
Je ne demande que ça, mais comment faire pour l'environnement du Mac?
Cedric Lefebvre
"Armel HERVE" wrote in message news: Bonjour à tous,
j'ai une classe qui étend JComboBox pour faire apparaitre un popup spécifique contenant différents composants (comme un calendrier par exemple).
Pour afficher le popup avec le bon L&F, j'ai le code suivant:
if(ui instanceof MetalComboBoxUI) { ui = new MetalTypeComboBoxUI(); } else if(ui instanceof MotifComboBoxUI) { ui = new MotifTypeComboBoxUI(); } else if(ui instanceof WindowsComboBoxUI) { cui = new WindowsTypeComboBoxUI(); } else ...
setUI(ui); }
avec une classe par L&F supporté: class MetalTypeComboBoxUI extends MetalComboBoxUI {
In article <40f2e9d2$0$7726$626a14ce@news.free.fr>, nospam@free.fr
says...
Je ne comprends pas la necessite d'implementer updateUI dans ton composan t.
Comme tu derives de JComboBox, par defaut, ton composant utilisera
l'UIComponent
utilise par JComboBox (MetalComboBoxUI par exemple).
Le problème est bien là: comment utiliser le L&F par défaut du syst ème ?
Dans 99% des cas, tu dois pouvoir reutiliser les UIComponent existant (me me
pour
afficher des dates). Et si ce n'est pas le cas, c'est plus un probleme de
design que
d'implementation.
C'est en tous cas ce que je te conseillerai de faire.
Je me suis mal exprimé: quand on clique sur la combo, son popup contient
un calendrier, ce qui n'est pas une liste, c'est pour cela que je
redéfinis la façon d'afficher le popup.
Ensuite, pour repondre precisemment a ta question : ce n'est pas la bonne
maniere
de proceder que de faire des setUI dans l'updateUI.
Ce que tu veux faire consiste en fait a etendre les L&F existants... donc ne
bidouille
pas pour les etendre sans les etendre mais etend les reellement en
definissant
tes classes UIComponent dans la classe L&F. C'est la solution propre.
Je ne demande que ça, mais comment faire pour l'environnement du Mac?
Cedric Lefebvre
"Armel HERVE" <armel.herve.enlever_ceci@netcourrier.com> wrote in message
news:MPG.1b577d793bda9177989692@news.free.fr...
Bonjour à tous,
j'ai une classe qui étend JComboBox pour faire apparaitre un popup
spécifique contenant différents composants (comme un calendrier par
exemple).
Pour afficher le popup avec le bon L&F, j'ai le code suivant:
Je ne comprends pas la necessite d'implementer updateUI dans ton composan t. Comme tu derives de JComboBox, par defaut, ton composant utilisera l'UIComponent utilise par JComboBox (MetalComboBoxUI par exemple). Le problème est bien là: comment utiliser le L&F par défaut du syst ème ?
Dans 99% des cas, tu dois pouvoir reutiliser les UIComponent existant (me me pour afficher des dates). Et si ce n'est pas le cas, c'est plus un probleme de design que d'implementation. C'est en tous cas ce que je te conseillerai de faire. Je me suis mal exprimé: quand on clique sur la combo, son popup contient
un calendrier, ce qui n'est pas une liste, c'est pour cela que je redéfinis la façon d'afficher le popup.
Ensuite, pour repondre precisemment a ta question : ce n'est pas la bonne maniere de proceder que de faire des setUI dans l'updateUI. Ce que tu veux faire consiste en fait a etendre les L&F existants... donc ne bidouille pas pour les etendre sans les etendre mais etend les reellement en definissant tes classes UIComponent dans la classe L&F. C'est la solution propre.
Je ne demande que ça, mais comment faire pour l'environnement du Mac?
Cedric Lefebvre
"Armel HERVE" wrote in message news: Bonjour à tous,
j'ai une classe qui étend JComboBox pour faire apparaitre un popup spécifique contenant différents composants (comme un calendrier par exemple).
Pour afficher le popup avec le bon L&F, j'ai le code suivant:
if(ui instanceof MetalComboBoxUI) { ui = new MetalTypeComboBoxUI(); } else if(ui instanceof MotifComboBoxUI) { ui = new MotifTypeComboBoxUI(); } else if(ui instanceof WindowsComboBoxUI) { cui = new WindowsTypeComboBoxUI(); } else ...
setUI(ui); }
avec une classe par L&F supporté: class MetalTypeComboBoxUI extends MetalComboBoxUI {
Christophe M
Armel HERVE wrote:
In article <40f2e9d2$0$7726$, says...
Je ne comprends pas la necessite d'implementer updateUI dans ton composant. Comme tu derives de JComboBox, par defaut, ton composant utilisera l'UIComponent utilise par JComboBox (MetalComboBoxUI par exemple).
Le problème est bien là: comment utiliser le L&F par défaut du système ?
} catch(Exception e){System.err.println("Look and feel pas chargé");}
Ensuite, dans toute l'application, TOUS les composants swings auront le L&F de l'os de la machine ou ça tourne. Pas besoin de t'embéter à gérer la bon look à chaque fois que t'as besoin d'une combobox.
Je ne demande que ça, mais comment faire pour l'environnement du Mac?
Sachant que le L&F mac est fourni par sun, si tu fais comme dit plus haut t'auras pas de soucis. C'est ça aussi l'interet de Java, pas besoin de se casser la tête sur les différents OS, c'est déjà géré pour toi.
Et de toute façon, si tu veux un L&F personnalisé, tu dois, comme déjà expliqué, dériver d'un existant, le mieux étant le métal. Après ton L&F sera disponible pour tous les OS. C'est comme ça qu'est fait le L&F mac ou windows, mais comme y a une licence sur le look (et aussi dépendance à des .dll natives) on ne peut simplement pas l'utiliser sur un autre OS.
Armel HERVE wrote:
In article <40f2e9d2$0$7726$626a14ce@news.free.fr>, nospam@free.fr
says...
Je ne comprends pas la necessite d'implementer updateUI dans ton composant.
Comme tu derives de JComboBox, par defaut, ton composant utilisera
l'UIComponent
utilise par JComboBox (MetalComboBoxUI par exemple).
Le problème est bien là: comment utiliser le L&F par défaut du système ?
} catch(Exception e){System.err.println("Look and feel pas chargé");}
Ensuite, dans toute l'application, TOUS les composants swings auront le
L&F de l'os de la machine ou ça tourne. Pas besoin de t'embéter à gérer
la bon look à chaque fois que t'as besoin d'une combobox.
Je ne demande que ça, mais comment faire pour l'environnement du Mac?
Sachant que le L&F mac est fourni par sun, si tu fais comme dit plus
haut t'auras pas de soucis. C'est ça aussi l'interet de Java, pas besoin
de se casser la tête sur les différents OS, c'est déjà géré pour toi.
Et de toute façon, si tu veux un L&F personnalisé, tu dois, comme déjà
expliqué, dériver d'un existant, le mieux étant le métal. Après ton L&F
sera disponible pour tous les OS. C'est comme ça qu'est fait le L&F mac
ou windows, mais comme y a une licence sur le look (et aussi dépendance
à des .dll natives) on ne peut simplement pas l'utiliser sur un autre OS.
Je ne comprends pas la necessite d'implementer updateUI dans ton composant. Comme tu derives de JComboBox, par defaut, ton composant utilisera l'UIComponent utilise par JComboBox (MetalComboBoxUI par exemple).
Le problème est bien là: comment utiliser le L&F par défaut du système ?
} catch(Exception e){System.err.println("Look and feel pas chargé");}
Ensuite, dans toute l'application, TOUS les composants swings auront le L&F de l'os de la machine ou ça tourne. Pas besoin de t'embéter à gérer la bon look à chaque fois que t'as besoin d'une combobox.
Je ne demande que ça, mais comment faire pour l'environnement du Mac?
Sachant que le L&F mac est fourni par sun, si tu fais comme dit plus haut t'auras pas de soucis. C'est ça aussi l'interet de Java, pas besoin de se casser la tête sur les différents OS, c'est déjà géré pour toi.
Et de toute façon, si tu veux un L&F personnalisé, tu dois, comme déjà expliqué, dériver d'un existant, le mieux étant le métal. Après ton L&F sera disponible pour tous les OS. C'est comme ça qu'est fait le L&F mac ou windows, mais comme y a une licence sur le look (et aussi dépendance à des .dll natives) on ne peut simplement pas l'utiliser sur un autre OS.
Cedric Lefebvre
Je me suis mal exprimé: quand on clique sur la combo, son popup contient un calendrier, ce qui n'est pas une liste, c'est pour cela que je redéfinis la façon d'afficher le popup.
Mais est-ce que tu as besoin de l'afficher le calendrier differemment selon le L&F du systeme ? Ou bien est-ce que tu peux te contenter du L&F par defaut des composants sous-jacents ?
Si c'est le 1/, tu ne peux pas, a moins de customiser toi meme les L&F et donc de livrer des L&F qui sont differents des L&F par defaut (vu que ce sont des sous-classes).
Sinon, les reponses de Christophe M sont les bonnes.
Cedric Lefebvre
Je me suis mal exprimé: quand on clique sur la combo, son popup contient
un calendrier, ce qui n'est pas une liste, c'est pour cela que je
redéfinis la façon d'afficher le popup.
Mais est-ce que tu as besoin de l'afficher le calendrier differemment selon
le L&F du systeme ? Ou bien est-ce que tu peux te contenter du L&F par
defaut des composants sous-jacents ?
Si c'est le 1/, tu ne peux pas, a moins de customiser toi meme les L&F et
donc
de livrer des L&F qui sont differents des L&F par defaut (vu que ce sont des
sous-classes).
Sinon, les reponses de Christophe M sont les bonnes.
Je me suis mal exprimé: quand on clique sur la combo, son popup contient un calendrier, ce qui n'est pas une liste, c'est pour cela que je redéfinis la façon d'afficher le popup.
Mais est-ce que tu as besoin de l'afficher le calendrier differemment selon le L&F du systeme ? Ou bien est-ce que tu peux te contenter du L&F par defaut des composants sous-jacents ?
Si c'est le 1/, tu ne peux pas, a moins de customiser toi meme les L&F et donc de livrer des L&F qui sont differents des L&F par defaut (vu que ce sont des sous-classes).
Sinon, les reponses de Christophe M sont les bonnes.