Interface graphique et internationalisation - Java - Programmation
Marsh Posté le 01-12-2006 à 22:49:14
Pourrais tu être un peut plus clair s'il te plaît...
pourquoi ne peux tu te créer une classe qui utlise l'héritage ex:
Code :
|
pour l'internationnalisation... pour faire simple
tu vas avoir plusieurs fichiers (fr_FR, en_US, en_EN) avec les même tag, mais des mesages différents
exemple, le tag out:
out = quitter (fr_FR)
out = exist (en_EN)
out = quit (en_US)
ensuite dant ton programme tu vas spécifier quel tag tu veux utiliser... (par exemple out).
mais comment savoir dans quel langue tu va l'exprimer?? (fr_FR, en_US.... et plein d'autre)
grace à la classe ResourceBundle (la région dans laquel tu te trouve, par défaut ou celle ou tu aimerais te trouver)
il faudrat aussi spécifier le fichier que tu veux utiliser...
mais ça c'est une autre histoire
je te conseil d'aller voir là pour plus d'info: www.infini-fr.com
pour résumer
Code :
|
voilà voilà
si tu as des question n'hésite pas
Marsh Posté le 06-12-2006 à 00:28:30
doctib a écrit : Pourrais tu être un peut plus clair s'il te plaît... |
Bah en fait c'est le prof qui le dit texto dans son cours "Java est un langage Objet, il est donc possible d'utiliser l'héritage. Doit-on hériter par exemple de la classe JFrame ? NON !".
Sinon, j'ai un peu de mal à internationaliser mon appli. En faite le choix de la langue se fait au travers d'une fenêtre de préférences (qui utilisera un fichier preferences.conf). Une fois la langue changée dans cette fenêtre, l'internationalisation de l'appli (que les boutons, menus, labels et certaines cellules de JTables) doit se faire dynaniquement.
Dans l'exemple que j'ai mis dans mon post il fait ça en dure :
Code :
|
Mais voilà le prof ne veut pas aussi que l'on stocke les composants en tant qu'attributs de la classe du moins "on peux faire mieux que les stocker dans des champs".
Je ne sais pas trop comment faire ça proprement et que ça internationalise toute mon appli classe par classe (vues).
Marsh Posté le 08-12-2006 à 18:15:36
doctib t'as pas une idée ou une suggestion à mon problème ?
Marsh Posté le 11-12-2006 à 09:51:02
as tu regarder ce que j'ai mis???
il faut en fait utiliser la commande:
Code :
|
mais comment savoir quelle propriété récuppérer? tu vas pouvoir choisir cela en fonction de ton objet:
Code :
|
regards le liens que j'ai donnée plus haut, vers www.infini-fr.com, il y a un exemple détaillé
Marsh Posté le 12-12-2006 à 14:00:54
doctib a écrit : as tu regarder ce que j'ai mis???
|
Oui j'ai regardé ce que tu as mis et aussi le site www.infini-fr.com.
Mais en fait ta solution (ci-dessous) ne marche que si je déclare les composants de la frame en tant qu'attributs de la classe. :
Code :
|
Mais notre prof ne veut que l'on stocke les composants en tant qu'attributs de la classe.
Donc ce que j'ai fait c'est que dans les méthodes qui créent les composants je leur ai associé des actionCommand (avec setActionCommand(String)) et je le récupère avec getActionCommand(). Mais ça ne marche pas pour les labels d'une part.
Et de deux je suis obligé de récupérer les composants du menu (dans mon expemple de mon début de post) puis descendre afin de récupérer les menuItem afin de changer leur labels, en utilsant 2 for imbriqués.
Donc en fait je ne sais pas trop comment faire ça proprement et que ça internationalise toute mon appli classe par classe.
Marsh Posté le 20-12-2006 à 10:09:40
Corey83 a écrit : Java est un langage Objet, il est donc possible d'utiliser l'héritage. |
Comme quoi les profs vous forment à leur façon de coder. Moi j'avais pas eu le même cours ... Son argument se défend mais de là à interdire le extends JFrame ... Une classe A doit héritée d'une classe B que si elle modifie les propriétés de la classe B ? Et si la classe A est une classe B améliorée (je sais je m'exprime mal en POO) ? Moi je ne vois pas rien de mal à faire un "class Chien extends Animal" ... Mais bon ... si on fait pas comme le prof ...
Corey83 a écrit : Et enfin, |
Imaginons qu'après une action X tu aies besoin de modifier le texte de ton bouton.
-Avec la méthode qui ne plait pas à ton prof, tu fais bouton.setText("Nouvelle action !" );
-Avec sa méthode ... tu vas t'amuser à chercher dans le JFrame.getComponents() et tester dans la liste de retour si c'est bien ton bouton ?
EDIT : je sais ça ne répond pas à ta question ... mais j'avais envie de réagir aux impératifs de ton profs. dsl
Marsh Posté le 05-01-2007 à 11:30:40
Tout d'abord, afin d'avoir un code propre et pro, utilise le mvc (modèle vue controleur) pour les interface graphique.
- une classe disons launcher qui créer une classe dérivé de JFrame pour l'interface et qui ne possède que le menu et la gestion du layout et et une instance des classes dérivées de panel.
- des classes dérivées de panel pour les interfaces implémentant Observer car elles vont observé un model de donnée de ton appli.
- Un model de donnée dérivé d'Observable qui servira a manipuler tes données.
- Une classe controleur dérivé qui gérera les boutons.
Marsh Posté le 28-11-2006 à 16:11:52
Bonjour à tous,
Je suis en train (plutôt je commence) de développer une application en interface graphique (Java - Swing). Je rencontre tout d'abord quelques difficultés à bien construire mon code. Voilà un exemple de ce que j'ai fait :
Donc en fait comme c'est une "belle" (assez grosse) interface je vais découper la frame principale en sous-classes afin que ce soit plus "propre". Comme dans mon exemple ci-dessus une classe pour le menu.
J'ai un peu de mal à bien structurer mon code parce que voilà ce que le prof (oui c'est un projet d'études) ne veut pas que l'on fasse dans notre code :
Java est un langage Objet, il est donc possible d'utiliser l'héritage.
Doit-on hériter par exemple de la classe JFrame ? NON !
ex à pas faire :
mais
On hérite d'une classe si on veut en changer les fonctionnalités (i.e. redéfinir une méthode)
Il est possible de faire des fonctions pour rendre le code plus clair
Et enfin,
Doit-on stocker les composants en tant qu'attributs de la classe ?
NON! Les composants sont déjà stockés dans leurs parents.
ex :
Si des personnes pouvait me dire ce qu'il ne va pas dans mon code ou ce qu'il faudrait que j'améliore se serai vraiment sympa.
Sinon, je voudrais aussi intégrer la possibilité d'internationaliser mon appli donc j'ai trouvé ce code qu'il a l'aire pas mal :
Mais voilà j'ai du mal à l'intégrer dans mon code afin que les conditions du prof soient respectées et que je puisse l'utiliser sur différent de la fenêtre (menu, calendrier, panel central, pop-up, ...). Si vous avez des aidés elles sont les bienvenues.
Merci d'avance à tous