Comment faire pour “peindre” sur JLabels sur un Composite?
J'ai un ensemble de JLabel
s, chacune contenant une lettre (via seText()), opaque et d'arrière-plan sur blanc, sur un JPanel
avec un GridLayout
si les étiquettes sont en train de former une table.
Je suis en train de faire une animation simple de mettre en évidence certaines des lignes et des colonnes puis il y a intersection. Je peux utiliser la setBackground()
d'étiquettes pour cet objet, mais pensé que je devais avoir plus de "choix" si l'un était en mesure d'utiliser un Graphics
objet (peut-être de dessiner un cercle autour de l'intersection, puis de l'effacer).
J'ai essayé d'étendre JLabel
, ou un dessin sur le JPanel
directement(à l'aide de getGraphics()
dans une méthode) mais il ne fonctionne pas, je pense que le dessin est derrière les étiquettes dans ce cas. Je ne peux pas comprendre où les "peinture" code d'être placés dans les deux cas, rien n'est apparu sur l'écran.
en bref, une méthode telle que la suivante, peut être utilisé pour dessiner sur les étiquettes?
devrait-il être un JLabel ou un Composite méthode?
public void drawsomething() {
Graphics2D g2d = (Graphics2D) getGraphics();
g2d.fillRect(100, 100, 100, 100);
}
paintComponent(...)
méthode. Pourquoi ne pas créer un sscce et de nous montrer ce que vous avez essayé?Qu'est-ce que je suis arriver de mal? merci d'éditer votre question avec un SSCCE
Speficially exprimer ce que vous essayez de faire au lieu de raconter une longue histoire, s'il vous plaît.
désolé pour la longue histoire, n'était pas prévu.
tout ce que vous faites en fin de compte, ne pas utiliser getGraphics
OriginalL'auteur meno | 2012-02-17
Vous devez vous connecter pour publier un commentaire.
Que si vous remplacez
paintChildren()
?Je ne suis pas sûr de ce que vous souhaitez réaliser, mais vous pouvez peindre tous vos contenus en un BufferedImage et de l'utiliser.
Je suis juste essayer d'être en mesure d'écrire des méthodes qui peuvent s'appuyer sur une grille de JLabels, drawSomething(x, y) par exemple, et de compensation (dans le cadre de l'animation). Par "l'aide" de la BufferedImage vous dire, en ajoutant à la commission, après dessin?
votre drawSomething(x,y) peut être relativement facile à réaliser avec un JLayeredPane, voir ma propre réponse
OriginalL'auteur StanislavL
Vous voudrez peut-être essayer un JLayeredPane pour peindre vos dessins sur le dessus de l'existant JComponents
voir l'exemple ici http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
OriginalL'auteur dm76
Je ne sais vraiment pas beaucoup à propos de l'élaboration des trucs encore, mais juste créé un petit exemple de code pour vous de regarder, j'espère que vous pouvez obtenir des renseignements. Afin de peinture sur le
JLabel you can use it's paintComponent(Graphics g)
méthode.Un Exemple De Code :
Heureux l'exemple aidé. Merci pour l'appréciation et pour le reste de GARDER le SOURIRE 🙂
OriginalL'auteur nIcE cOw
Utilisation paintComponent(Graphics g) au lieu de paint(Graphics g). Qui va de la peinture sur la GUI
OriginalL'auteur Shadrech