Bonjour,
Je suis chargé de la création d'une charte graphique pour une application swing (jdk 1.5)
Je souhaiterais avoir vos avis sur la meilleure "architecture" à adopter sachant que je voudrais passer le moins de temps possible dessus (logique) et que la création de nouveaux écrans soit la plus simple possible pour les développeurs.
1. La création d'un look and feel me parait beaucoup trop longue et complexe.
2. Je souhaiterais partir du WindowsLookAndFeel (ou peut-être un autre, à définir) et modifier quelques aspects de base, à savoir :
- rendre tous les panels non opaques par défaut (pour qu'on puisse voir un dégradé ou une image dans le fond de l'application).
- modifier certaines fonts pour que toute l'application soit homogène (notamment pour les JTextArea qui n'ont pas la même font par défaut que les JLabels ou JTextfield par exemple)
- modifier certaines couleurs de texte
- harmoniser les bordures des panels, des scrollpanes
- éventuellement définir une taille fixe pour les boutons.
- ajouter peut-être quelques effets (dégradés derrière les titres des panels par exemple)
...etc
le tout étant centralisé dans un fichier xml, properties ou éventuellement une ou plusieurs classes (le top serait plusieurs fichiers qui constitueraient des skins différentes pour l'appli, on peut toujours rêver)
L'idéal serait que le développeur n'ait jamais à se soucier de ces aspects, en gros qu'il n'ait jamais à appeler des méthodes setFont(), setBackgroundColor(), setBorder() ou je ne sais quel autre méthode sur les composants qu'il ajoute, sachant que le placement des composants sera réalisé avec le concepteur de NetBeans (Matisse) en utilisant des Layouts de type GroupLayout et GridBagLayout.
L'idée la + simple et la + rapide qui me vient à l'esprit est la suivante :
1. Appliquer le look and Feel windows (ou un autre).
2. passer par des appels du type :
UIManager.put("Label.font", new Font("Arial", Font.BOLD,12));
1. Que pensez-vous de cette solution ? Est-ce que cela risque de poser des problèmes par la suite (changement du look and feel de base par exemple) ?
2. Est-ce que mon application sera toujours portable ? (sous linux notamment, je pose cette question suite à la lecture de ce thread)
3. Vaut-il mieux étendre les classes de swing en appliquant les propriétés concernées et utiliser ces composants dans le concepteur ? (sachant que j'ai un peu de mal à utiliser l'héritage avec Matisse et le refactoring ne fonctionne pas sur le code généré par le concepteur).
4. Avez-vous une meilleure solution (plus "propre" peut-être) ?
5. J'ai jeté un rapide coup d'oeil à Synth mais apparemment il faut partir de zéro et définir tous les composants (sacré boulot !), je ne crois pas qu'on puisse partir du look and feel windows. Sinon, il y a Synthetica, mais ça ne me plait pas trop (je sais que je suis difficile !)
Voilà, merci d'avance pour vos réponses,
Laurent.
PS : Je connais déjà la plupart des look and feel existants (jgoodies, skin look and feel et autres sur javootoo.com) mais je n'ai pas trop envie de partir là-dessus.
Partager