2009-07-27 10 views
2

Dans mon application Swing, j'ai différents types de texte que je souhaite afficher. Par exemple, je veux afficher un texte en-tête avant une liste de choix, quelque chose comme:Personnalisation des polices d'étiquettes dans Swing

 
    Select choice: 
    a 
    b 

Je veux que l'étiquette à utiliser la police « Titre » « Select Choice » (que je définis), et les choix utiliser la police "Choice". Ce modèle se produira plusieurs endroits dans mon application, donc idéalement je voudrais centraliser où les polices sont définies.

Mon approche actuelle est d'utiliser une usine pour créer les différents types d'étiquettes:

LabelFactory.createHeadingLabel("LabelText"); 
LabelFactory.createChoiceLabel("ChoiceText"); 

L'usine se lit dans un fichier de propriétés spécifiant les polices et je personnaliser les étiquettes quand ils sont créés dans l'usine. Je sais que l'utilisation d'une usine comme celle-ci fonctionne, mais je ne suis pas sûr qu'il existe une convention Swing standard pour faire quelque chose comme ça. Toute contribution serait appréciée.

Répondre

2

Une autre approche consisterait à étendre JLabel.

Vous pouvez toujours lire les polices à partir d'un fichier de configuration, mais de cette façon, vous pouvez créer des étiquettes de manière beaucoup plus similaire à une JLabel régulière.

private JLabel header = new HeaderJLabel("Header text"); 

Tout ce que vous auriez à faire est de remplacer le constructeur pour vos étiquettes personnalisées.

De plus, vous ne devriez lire le fichier de configuration qu'une seule fois. Chargez-le dans la mémoire, et accédez à partir de la mémoire à partir de là.

+0

Hé oui, ce fut l'autre comme je l'avais envisagé. En général, je ne fais pas beaucoup de développement swing, donc je ne savais pas s'il y avait un moyen standard de faire des choses. –

+0

Je ne crois pas qu'il y ait une norme pour ce que vous faites parce que ce n'est généralement pas trop commun. – jjnguy

+0

Il n'est pas courant d'avoir plusieurs styles de texte sur une interface utilisateur riche? –

0

Vous pouvez utiliser un code HTML limité dans de nombreux composants Swing. Vous pouvez donc utiliser html pour donner différents styles à votre texte. Par exemple, headingLabel.setText("< html><b>This text will be bold</b>< /html>"); Vous obtiendrez une étiquette avec du texte en gras.

Remarque: vous devez supprimer l'espace supplémentaire de < html> et </html>