Wie "paint" auf JLabels auf einem JPanel?
Habe ich eine Reihe von JLabel
s, die jeweils einen Brief (per seText()), undurchsichtigen und Hintergrundfarbe auf weiß gesetzt, auf eine JPanel
mit einem GridLayout
so dass die Etiketten bilden eine Tabelle.
Ich bin dabei eine simple animation, in der Hervorhebung bestimmter Zeilen und Spalten und dann Kreuzung. Ich kann die setBackground()
von Etiketten für diesen Zweck, aber dachte, ich hätte mehr "Auswahlmöglichkeiten" wenn ein war in der Lage, einen Graphics
Objekt (vielleicht zeichnen Sie einen Kreis um Schnittpunkt, dann löscht ihn).
Ich habe versucht zu verlängern JLabel
oder Zeichnung auf der JPanel
direkt(über getGraphics()
in einer Methode), aber es hat nicht funktioniert, ich denke die Zeichnung ist hinter den Bezeichnungen in diesem Fall. Ich kann nicht herausfinden, wo sollte das "Bild" - code platziert werden, in jedem Fall nichts auf dem Bildschirm erschien.
kurz gesagt, eine Methode wie die folgende, können verwendet werden, um zu zeichnen auf top-labels werden?
sollte es ein JLabel oder JPanel-Methode?
public void drawsomething() {
Graphics2D g2d = (Graphics2D) getGraphics();
g2d.fillRect(100, 100, 100, 100);
}
paintComponent(...)
Methode. Warum nicht erstellen Sie eine sscce und zeigen Sie uns, was Sie versucht haben?Was ist es, ich bin immer falsch? bitte Bearbeiten Sie die Frage mit SSCCE
Speficially Ausdrücken, was Sie versuchen zu tun, anstatt zu sagen, eine lange Geschichte, bitte.
sorry für die lange story, war nicht beabsichtigt.
was auch immer Sie tun, am Ende, nicht mit getGraphics
InformationsquelleAutor meno | 2012-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ist, wenn Sie überschreiben
paintChildren()
?Ich bin nicht sicher, was Sie erreichen möchten, aber Sie können malen Sie alle Ihre Inhalte in ein BufferedImage und verwenden Sie es.
Ich versuche nur, schreiben zu können, die Methoden, die zeichnen auf einem raster von JLabels, drawsomething spielen(x, y) für Beispiel, und es deaktivieren (im Rahmen der animation). Von der "Verwendung" des BufferedImage du meinst, indem es auf die Platte nach Zeichnung?
Ihre drawsomething spielen(x,y) kann relativ leicht erreicht mit einer JLayeredPane, siehe meine eigene Antwort
InformationsquelleAutor StanislavL
Möchten Sie vielleicht versuchen, ein JLayeredPane zu malen, Ihre spezifischen Zeichnungen auf der Oberseite des bestehenden JComponents
siehe Beispiel hier http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
InformationsquelleAutor dm76
Ich weiß nicht wirklich viel über das zeichnen Zeug noch nicht, aber gerade erstellt eine kleine Beispiel-code für Sie zum anschauen, hoffentlich können Sie einige Informationen aus ihm heraus. Um die Farbe auf den
JLabel you can use it's paintComponent(Graphics g)
Methode.Ein Beispiel-Code :
Froh, dass das Beispiel half. Vielen Dank für die Wertschätzung und für den rest KEEP SMILING 🙂
InformationsquelleAutor nIcE cOw
Verwenden paintComponent(Graphics g) anstelle von paint(Graphics g). , Das wird Farbe über die GUI
InformationsquelleAutor Shadrech