Un composite arrière-plan en dégradé
J'ai googlé mais n'a pu trouver aucune réponse correcte. J'ai un JPanel
et je veux qu'il ait un gradient qui vient du haut vers le bas. Je vais juste utiliser deux couleurs. Comment puis-je y parvenir?
Vous devez vous connecter pour publier un commentaire.
Ici, vous allez:
getPreferredSize()
deJPanel
et de l'appel depack()
surJFrame
plutôt que d'appelersetSize(..)
setSize()
appel est destiné à avoir quelque chose de visible à l'écran. Je ne veux pas remplacergetPreferredSize()
dans ce cas, parce que ma compréhension est que le jury seront plus tard utilisés pour définir un LayoutManager et ajouter des composants, par conséquent,getPreferredSize()
doit être calculée par le LayoutManager et pas une taille arbitraire. De toute façon, c'est juste en coupant les cheveux en quatre et je crois que les deux solutions sont acceptables aussi.GradientPaint
est plus rapide pour les deux dégradés de couleurs,LinearGradientPaint
permet tout simplement pour plus de couleurs 😉JComponent
objets. La référence Mohammed Sayed fournit une approche générique par le réglage de l'opacité de l'objet d'origine et de la peinture comme la dernière action: http://www.javarichclient.com/how-to-add-a-gradient-background-to-any-jcomponent/public void paintPanelBackground(SynthContext context, Graphics g, int x, int y, int w, int h)
dans lequel je suis en train de faireg2.setPaint(new GradientPaint(x, y, Color.DARK_GRAY, 0, h / 2, new java.awt.Color(30, 30, 30)));
est-il sécuritaire de la performance sage ?hey Bebbie vous pouvez utiliser ceci :
espérer que l'aide;
vous pouvez également revenir en arrière à ce artical pour obtenir de l'aide:
Dégradé d'arrière-plan à tout jcomponent
JComponent.setOpaque(false);
est un facteur clé etsuper.paintComponent(grphcs);
doit être le dernier appel. Sinon, votre code ne fonctionnera pas avec tous lesJComponent
objets et aussi il n'est pas robuste au sujet d'éventuelles modifications ultérieures. Mais merci pour le pointeur.