Kreis auf JComponent zeichnen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi

ich würde gerne auf eine JComponent einen Kreis zeichnen. Und zwar ohne paintComponent zu überschreiben.

Der Kreis soll auf den Hintergrund gezeichnet werden, darüber sollen weitere Komponenten (wie bsp. ein Label) gelegt werden können.

Hier mein Beispielquellcode:
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


public class Demo extends JFrame{
	public Demo(){
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JPanel panel = new JPanel();		
		panel.add(new JLabel("Ein Text"));		
		
		this.add(panel,BorderLayout.CENTER);
		this.pack();
		this.setSize(800, 600);
		this.setVisible(true);
		
		// folgender code bewirkt nichts
        Graphics2D gr = (Graphics2D)panel.getGraphics();
		gr.setColor(Color.BLACK);
		gr.drawOval(30,30, 30, 30); 
	}

	public static void main(String[] args) {	
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				new Demo();
			}
		});
	}

}

Wie man sieht, erzeuge ich ein JPanel und lege ein JLabel darin ab. Das JPanel wird dem JFrame hinzugefügt.

Anschließend versuche ich, das Graphics Object des JPanels zu holen und darauf zu zeichnen. Das klappt jedoch nicht. Wie muss ich das richtig machen?
 
S

SlaterB

Gast
> Wie muss ich das richtig machen?

diesen Satz hier

> Und zwar ohne paintComponent zu überschreiben.

gänzlich umkehren und NIE NIE getGraphics() aufrufen!
 
G

Gast

Gast
Kein Problem ich tus auch nie nie wieder wenn du mir sagst wie ich den verdammten Kreis auf das Panel bekomme! :p
 
S

SlaterB

Gast
falls du das im Sinne von 'ich wills aber trotzdem so machen' meinst:

Code:
public class Demo
    extends JFrame
{
    public Demo()
    {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JPanel panel = new JPanel();
        panel.add(new JLabel("Ein Text"));

        this.add(panel, BorderLayout.CENTER);
        this.pack();
        this.setSize(800, 600);
        this.setVisible(true);

        Runnable r = new Runnable()
            {
                public void run()
                {
                    try
                    {
                        Thread.sleep(10);
                    }
                    catch (InterruptedException e)
                    {
                        e.printStackTrace();
                    }
                    Graphics2D gr = (Graphics2D)panel.getGraphics();
                    gr.setColor(Color.BLACK);
                    gr.drawOval(30, 30, 30, 30);
                }
            };
        new Thread(r).start();
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    new Demo();
                }
            });
    }

}

ansonsten: Lehrbuch zu paintComponent oder was genau ist die Frage?
 
G

Gast

Gast
Ne im Ernst, wenn es verpönt ist, getGraphics() aufzurufen dann will ich das auch nicht so machen.

Mein Problem ist folgendes:
Ich kann das paintComponent() in JPanel nicht überschreiben, weil ich keinen Einfluss auf das JPanel habe. D.h. das Panel stammt aus einem Programmteil, in dem ich nichts ändern kann. Ich kann mir lediglich das Objekt des JPanels besorgen und damit etwas tun.

Ist das irgendwie möglich?
 
S

SlaterB

Gast
wenn du auf die Komponente keinen Einfluss hast, dann hast du so oder so keine Möglichkeiten,

falls du auf die sich selber zeichnende Komponente drübermalen willst,
geht das immernoch gut mit einem JPanel,

nimm dir einfach ein neues JPanel x welches das unänderbare JPanel y genau enthält und übrschreibe paintComponent() von x,
rufe darin auf jeden Fall super.paintComponent() auf

inwieweit sowas aber gut funktionieren kann, mag ich nicht beurteilen
 
G

Gast

Gast
Ok,

dann probier ich das mal.

Ach ja nur aus Interesse: Warum muss funktioniert dein Beispiel oben mit einem Thread und meins ohne nicht? Liegts an den 10 millisec Wartezeit?
 
S

SlaterB

Gast
das Fenster erscheint erst nach Ende von invokeLater(), wenn der AWT-Thread wieder Luft für solche Aufgaben hat,
dann wird auch gezeichnet,
alles was du vorher zeichnest wird übermalt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
YAZZ BlueJ Bewegung einer Figur im Kreis Java Basics - Anfänger-Themen 4
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
C Kleinsten Kreis einer Punktmenge bestimmen Java Basics - Anfänger-Themen 4
CptK Interface Kleine Kreise in großem Kreis anordnen Java Basics - Anfänger-Themen 3
Y Kreis auf einer Kreisbahn bewegen Java Basics - Anfänger-Themen 5
P Erste Schritte Kreis animieren Java Basics - Anfänger-Themen 2
A Kreisumfang/-Fläche vom Kreis berechnen Java Basics - Anfänger-Themen 39
H Kreis verschieben Java Basics - Anfänger-Themen 10
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
X Kreis/Linie Programmieren Java Basics - Anfänger-Themen 1
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
L Dreieck Kreis Java Basics - Anfänger-Themen 12
A Kreis,Radius Programm Java Basics - Anfänger-Themen 3
N Per Button Kreis zeichnen Java Basics - Anfänger-Themen 8
C Kreis nach Mausklick zeichnen Java Basics - Anfänger-Themen 5
A wie Kreis mit Schleife versetzten? Java Basics - Anfänger-Themen 25
O Punkte auf einem Kreis "wandern" lassen Java Basics - Anfänger-Themen 3
U Kreis um Textfelder zeichnen Java Basics - Anfänger-Themen 4
D Kreis mit Pfeiltaste bewegen Java Basics - Anfänger-Themen 3
K Bild auf Kreis packen Java Basics - Anfänger-Themen 2
E Kreis erstellen Java Basics - Anfänger-Themen 10
B Einen Kreis erzeugen Java Basics - Anfänger-Themen 3
S Erzeuge einen Kreis Java Basics - Anfänger-Themen 16
B Kreis,Punkt,Zylinder Java Basics - Anfänger-Themen 6
D Punktberechnung im Kreis Java Basics - Anfänger-Themen 15
TheKing Bild nur in Kreis sichtbar machen Java Basics - Anfänger-Themen 6
K Kreis mit neuer Position zeichnen Java Basics - Anfänger-Themen 3
M Umfang von Rechteck oder Kreis anhand der Parameter Java Basics - Anfänger-Themen 2
L Klickbarer Bereich in einem Kreis Java Basics - Anfänger-Themen 13
D kreis gelb gefüllt aber schwarzer rand. Java Basics - Anfänger-Themen 2
K Kreis Zeichnen ? Code Richtig aber keine Zeichung Java Basics - Anfänger-Themen 8
L Kreis der sich bewegt Java Basics - Anfänger-Themen 11
0 Klasse Kreis Java Basics - Anfänger-Themen 4
P Java-Applet, Kreis zeichnen Java Basics - Anfänger-Themen 4
E Kreis in Frame ,den man mit der Maus versetzen kann? Java Basics - Anfänger-Themen 2
7 Kreis zeichnen Java Basics - Anfänger-Themen 4
J Kreis herumfliegen & abprallen von Rändern Java Basics - Anfänger-Themen 7
G contains - Punkt in Kreis enthalten? Java Basics - Anfänger-Themen 6
A Kreis mit gedrückter Maustaste bewegen. Java Basics - Anfänger-Themen 2
S Thread - Kugel im Kreis hin-und herflitzen lassen Java Basics - Anfänger-Themen 3
O Test auf JComponent Java Basics - Anfänger-Themen 7
JFeel-x JComponent<-----Eigenschaften<-- Als Liste abfragen? Java Basics - Anfänger-Themen 8
N Mit MouseEvent und JComponent Elementnamen bekommen Java Basics - Anfänger-Themen 5
K Swing JComponent Java Basics - Anfänger-Themen 6
0 JComponent klonen? Java Basics - Anfänger-Themen 13
G bild aus jcomponent, speichersparend? Java Basics - Anfänger-Themen 4
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
K 3D Fläche Zeichnen Java Basics - Anfänger-Themen 2
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
V Speicherzustand zeichnen Java Basics - Anfänger-Themen 0
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
Mosquera f(x)=x² zeichnen Java Basics - Anfänger-Themen 5
J Graphen in Java zeichnen Java Basics - Anfänger-Themen 11
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
S Zeichnen mit Wiederholungen Java Basics - Anfänger-Themen 12
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25
snipesss Linie zeichnen ohne extra Klasse? Java Basics - Anfänger-Themen 3
C Umrisse von Bilddateien mithilfe Polygonen zeichnen Java Basics - Anfänger-Themen 5
G Aus einem Code ein Sequenzdiagramm zeichnen? Java Basics - Anfänger-Themen 1
K Rechtecke rekursiv zeichnen Java Basics - Anfänger-Themen 20
V Quadrate rekursiv zeichnen Java Basics - Anfänger-Themen 7
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
C Schleifenaufgabe - Molekül zeichnen Java Basics - Anfänger-Themen 6
K Ungenauigkeit beim Zeichnen von Funktionen Java Basics - Anfänger-Themen 6
H Linie zeichnen... Java Basics - Anfänger-Themen 16
N Treppe zeichnen Java Basics - Anfänger-Themen 1
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
M in Java zeichnen Java Basics - Anfänger-Themen 2
J JLabel Icon neu zeichnen Java Basics - Anfänger-Themen 2
J Rechteck zeichnen mit Canvas Java Basics - Anfänger-Themen 7
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
S Rechteck zeichnen Java Basics - Anfänger-Themen 2
S Ein Graphics Obejct mehrmals mit denselben Eigenschaften zeichnen lassen?!?!? Java Basics - Anfänger-Themen 4
S Wo beginnt ein Draw String zu zeichnen. Java Basics - Anfänger-Themen 4
S Paint Anwendung: Freihandlinien zeichnen Java Basics - Anfänger-Themen 4
llabusch Layout neu zeichnen lassen Java Basics - Anfänger-Themen 2
A Histogramm zeichnen Java Basics - Anfänger-Themen 2
S Punkt in Java zeichnen Java Basics - Anfänger-Themen 14
E Dreieck zeichnen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
C Hilfe beim Zeichnen Java Basics - Anfänger-Themen 8
D Haus zeichnen Java Basics - Anfänger-Themen 4
K Methoden Objekt auf JFrame zeichnen Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben