Comment définir la couleur d'un bouton d'un JButton (pas de couleur d'arrière-plan)
J'ai un JButton
que je voudrais changer la couleur de fond est blanc. Lors de l'utilisation du Métal Regarder Et Sentir, je atteindre l'effet désiré avec setBackground
:
Malheureusement, le concept de "couleur d'arrière-plan" est différente lors de l'utilisation de Windows LAF; la couleur de fond est la couleur tracée autour du bouton:
Je voudrais utiliser le Windows LAF, mais de permettre à la couleur d'un bouton de cette JButton
être changé par du blanc. Comment puis-je faire cela?
essayez de substitution de la
"Je voudrais utiliser le Windows LAF" je me demande ce que votre OSX & les utilisateurs de Linux voudrais voir? Je parie que ce n'est pas le Windows LAF (même si c'était pratique). 😉
Thompson: Ne vous inquiétez pas. Je suis en utilisant le système de LAF, mais pour l'instant, l'exigence s'applique uniquement à Windows. 🙂
Ma première question serait: "pourquoi?" Que dire de ce bouton oblige à être d'une couleur différente et un regard différent des autres boutons?
paintComponent(Graphics g)
méthode de la JButton
, et de faire de la peinture custom."Je voudrais utiliser le Windows LAF" je me demande ce que votre OSX & les utilisateurs de Linux voudrais voir? Je parie que ce n'est pas le Windows LAF (même si c'était pratique). 😉
Thompson: Ne vous inquiétez pas. Je suis en utilisant le système de LAF, mais pour l'instant, l'exigence s'applique uniquement à Windows. 🙂
Ma première question serait: "pourquoi?" Que dire de ce bouton oblige à être d'une couleur différente et un regard différent des autres boutons?
OriginalL'auteur Joseph Trebbien | 2011-06-06
Vous devez vous connecter pour publier un commentaire.
Vous aurez à décider si cela vaut la peine l'effort, mais vous pouvez toujours créer youe propre
ButtonUI
, comme le montre cette exemple en raison de @mKorbel.OriginalL'auteur trashgod
Je utiliser le JDK 6 sur XP. Il semble que la Fenêtre de l'INTERFACE utilisateur ne suit pas la normale règles de la peinture en plus de façons que 1. Comme vous avez remarqué setBackground() ne fonctionne pas. Vous devriez être en mesure de faire de la peinture custom en racontant le composant de ne pas remplir la zone de contenu:
Lorsque vous exécutez le code, car il semble fonctionner correctement. C'est lorsque vous cliquez sur le bouton que vous voyez la Frontière changement. Cependant, c'est vous exécutez Windows XP LAF, la Frontière ne change jamais vous ne voyez pas le bouton cliquez sur effets.
Donc, je suppose que le problème est avec le WindowUI et vous auriez besoin de personnaliser l'INTERFACE utilisateur qui est probablement trop complexe pour ce faire je n'ai pas de solution.
BackgroundButton
ressemble à ceci quandTest 1
est sélectionné.OriginalL'auteur camickr
mais je continue de penser que (modifié mais par Darryl) est correct UIManager.get("Bouton.gradient"), parce qu'il serait compatible
EDIT: réponse correcte serait - Nimbus ou certains Personnalisé, L&F, pourquoi réinventer la roue (par Rob)
OriginalL'auteur mKorbel
Votre meilleure option est d'utiliser SwingX:
JXButton vous permet de définir un Peintre pour l'arrière-plan avec
.setBackgroundPainter(Painter)
à l'aide d'un MattePainter réalise exactement ce que vous voulez. Avoir que JXButton s'étend de JButton, les changements sont minimes dans votre code:deviendrait
OriginalL'auteur Yago Méndez Vidal
au lieu de jouer avec le bouton de la couleur d'arrière-plan, pourriez-vous faire quelque indication que vous essayez de montrer d'une manière différente?
de l'affichage d'une Icône, rendre le bouton gras au lieu du texte brut, etc.
Indiquant quelque chose que par une autre couleur d'arrière-plan n'est pas toujours évident, et selon le système de l'utilisateur des couleurs, peut être choquante, ou invisible.
par exemple, si l'utilisateur est en cours d'exécution de windows en "haut contraste" mode?
OriginalL'auteur John Gardner