Comment obtenir un Merci beaucoup pour toutes vos réponses. D'après ce que je rassemble, il semble que Java ne prenne pas en charge la grisatation automatique de J'ai cependant essayé une approche hors de la boîte différente, où j'ai placé le texte HTML qui n'a pas fonctionné. Toute suggestion de cette façon? P> Edit: ajouté Solution mise en œuvre . p> p> jlabel code> Affichage d'une chaîne HTML à apparaître grisaté (qui est le comportement de
jlabel code> s qui ne affiche pas le texte HTML)? Existe-t-il d'une autre manière que de changer de couleur moi-même en modifiant la propriété
au premier plan code>?
jlabel code> S quand ils utilisent du texte HTML. Solution de Suraj est venu le plus proche de la solution en considérant les limitations. P>
jlabel code> s à l'intérieur d'un intérieur
jPanel code> et a fait ceci: p>
5 Réponses :
Vous pouvez spécifier la couleur de la police dans le HTML. P>
@camickr: Donc, je devrais le faire à chaque fois que l'état activé / désactivé change?
Oui, c'est pourquoi l'utilisation de la méthode Setforeground () est toujours la solution la plus facile.
Si le texte est HTML, le texte ne sera pas grisé en raison du code suivant dans BasicLabelui # Peinture () CODE>
label2.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (!evt.getPropertyName().equals("enabled"))
return;
if (evt.getNewValue().equals(Boolean.FALSE))
label2.setText("<html><font color=gray>HTML <b>text</b></html>");
else
label2.setText("<html><font color=black>HTML <b>text</b></html>");
}
});
setforeground code> fonctionne, je vais donc suggérer d'utiliser cela plutôt que de modifier le texte de la étiquette pour changer la couleur.
Le changement de HTML pourrait ne pas être une bonne pratique cependant en ce qui me concerne.
remplacer la méthode de la peinture dans l'interface utilisateur, définissez la propriété client
@sreeejith ... Apparemment, il ne fonctionnera pas, pour deux raisons A) Si vous définissez BasichTML.PropertyKey sur NULL, tout composant à l'aide du rendu HTML ne parviendra pas à peindre HTML B) bien que le texte soit affiché en gris, il affichera le texte. Entrie HTML, c'est-à-dire qu'il affichera " html texte b>" au lieu du texte HTML. :)
solution mise en œuvre: cavé et utilisé setforeground code> à la fin, comme il apparaît que Java semble explicitement ignorer le
activé code > Propriété lors de la peinture
jlabel code> s tant qu'il contient du texte HTML. Voir aussi @ Réponse de Suraj A >, pour la solution "pure". p> p>
Je suggérerais ce qui suit, qui est une combinaison de deux solutions fournies ici:
vous devriez éditer votre question originale pas post un autre
@Lombo, mon mauvais, je n'ai pas réalisé - supprimé le précédent maintenant.
Cela semble être corrigé dans Java 1.7.
@Systemparadox Merci de nous avoir laissé savoir!