Bonjour,
Mon iMac utilise le gestionnaire de boutons/onglets/etc. "Aqua". Cela me pose un problème avec un programme Java : les boutons demeurent incolores.
Est-ce que vous savez si on peut choisir une autre "police de boutons" que "Aqua"?
Bonjour,
Mon iMac utilise le gestionnaire de boutons/onglets/etc. "Aqua". Cela me pose un problème avec un programme Java : les boutons demeurent incolores.
Est-ce que vous savez si on peut choisir une autre "police de boutons" que "Aqua"?
Aqua fait partie de Mac OS X et ne peut donc pas se "désactiver" ! Cependant, il est possible de "customiser" le système ; tout dépendra de sa version.
Qu'est-ce que "Customiser" veut dire??
Mon OS :
Version du système : Mac OS X 10.5.8 (9L31a)
Version du noyau : Darwin 9.8.0
Volume de démarrage : Macintosh HD
Mode de démarrage : Normal
La nouvelle version de la JVM Mac OS n'a pas résolu le problème. Je vais penser mon problème autrement...
Tu as vraiment la tête dure... Il n'y a pas l'ombre d'un bug dans toute cette histoire, juste ton incapacité à comprendre le fonctionnement de Swing.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part UIManager.setLookAndFeel(new MetalLookAndFeel());
Oups,Chatanga me gronde! Sans doute avec raison.
Je ne connais pas ceci :
UIManager.setLookAndFeel(new MetalLookAndFeel());
Pour avoir lu les cours sur ObjectiveC, cela semble être du code Apple. Mais je n'en ai pas poursuivi l'apprentissage et suis resté au java.
J'ai tenté au cas où de copier cette ligne de code dans le mien. Eclipse m'a proposé d'importer le MetalLoofAndFeel, mais ensuite le compilateur n'a pas laissé démarrer le programme.
Chatanga, peux-tu m'expliquer ce qu'est ce code, et comment s'en sert-on s'il te plaît? Merci...
Non, non, c'est bien du java.
Va voir dans la FAQ GUI java.
Valère
Pensez au bouton
Je ne répond pas aux questions techniques par email ou MP.
Pour faire simple : les JComponent Swing fournis avec le JDK (JTextField, JButton, etc.) ne se dessinent pas eux-mêmes mais délèguent leur rendu à des UI Delegate, c'est-à-dire des instances de ComponentUI. Le but d'un look and feel est justement de founir un jeu de ComponentUI pour tous les composants Swing. L'association entre un JComponent et un ComponentUI peut être changée dynamiquement lorsqu'on change le look and feel courant de la manière suivante :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part UIManager.setLookAndFeel(new MetalLookAndFeel());
Le look and feel Metal est le celui "par défaut" de Swing qu'on retrouve sur toutes les plateformes, alors que les look and feel dits "natifs" (ils sont en Java et ont juste la même tête que le thême natif de leur plateforme) ne sont généralement disponibles que sur une plateforme unique
(pour des raisons de copyright et non des contraintes techniques).
Voici un exemple plus complet pout illustrer la configuration d'un look and feel.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.plaf.metal.MetalLookAndFeel; public class MonApplication { public static void main(String[] arguments) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(new MetalLookAndFeel()); JFrame frame = new JFrame("Mon application"); frame.setSize(800, 600); frame.setVisible(true); } catch (UnsupportedLookAndFeelException e) { throw new RuntimeException(e); } } }); } }
Je n'ai fait que décrire grossièrement le fonctionnement de Swing, le lien http://www.j2ee.me/products/jfc/tsc/...ure/index.html de donnera plus d'informations. J'ajoute même ce lien http://code.google.com/p/macwidgets en bonus.
Quoiqu'il en soit, il n'y a pas de formule magique à appliquer aveuglément pour ton problème. Soit le comportement par défaut - dénué de bug - de Swing te convient, soit tu vas devoir te plonger *réellement* dans Swing. Et comme tu es capable de confondre du Java et de l'Objective C... le chemin risque d'être long. A titre d'exemple, voilà à quoi pourrait ressembler un appel à setLookAndFeel en Objective C:
Code Obj-C : Sélectionner tout - Visualiser dans une fenêtre à part [UIManager setLookAndFeel: [[MetalLookAndFeel alloc] init]];
Y'a plus ressemblant.
Merci beaucoup pour ces réponses. J'essaie tout cela ce soir et je vous tiens au courant.
J'en apprends des choses!! A vrai dire, jusqu'à présent, je n'avais jamais eu à aller au delà de la JVM. Je programmais sur PC, et suis revenu au Mac le printemps dernier. La portabilité de java a été bonne jusqu'à ce que je veuille colorer mes boutons...
ça marche, ça marche!!
Merci beaucoup, le MetalLookAndFeel fonctionne très bien, et il m'a été facile, Chatanga, d'adapter ton code.
Merci encore à tous.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager