Rectangles ausserhalb der paintComponent drawen!

Servo Herko

Aktives Mitglied
Hallo,
ich wollte wissen wie man z.b. ein Rectangle ausserhalb der paintComponent() methode drawen kann.
mein code:
Java:
public class Screen extends JLabel {
		@SuppressWarnings("static-access")
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
		}
		public void addRect() {
			g.drawRect(50, 50, 50, 50); //so funktioniert es leider nicht
		}
ich wüsste nicht wie man bei dem Grahics g immer was zu hauen kann!
 
Ich wollte das jetzt nicht machen, da meine drawRect ja genau das gleiche ist.
nur zu test zwecken. Später würde ich es mit einem parameter machen, aber es geht überhaupt darum dem g etwas zu adden, was ich nicht hin bekomme...
 
Java:
    public class Screen extends JLabel {
            @SuppressWarnings("static-access")
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                addRect(g);
            }
            public void addRect(Graphics g) {
                g.drawRect(50, 50, 50, 50);
            }
 
😵 ich meine das ja nicht so, ich meine z.b. auf Knopfdruck ein Rectangle zu erstellen, so wie jetzt würde es ja keinen Sinn ergeben... Also das die Methode von ausserhalb aufgerufen wird und dann etwas drawed!
 
Ich würde eine List mit Rectangles im screen anlegen. In der draw zeichnest du einfach alle rectangles in der list, in der add fügst du ein rectagle der list hinzu. Bei einem Knopfdruck musst du also erst die addRect methode aufrufen und danach screen.repaint(). Kann grad leider keinen Code posten, wenn du es allein nicht schaffst, sag nochmal bescheid!
 
wenn du eine Methode schreibst z.B.

Java:
public void rechteck(){

Graphics g = new Graphics();

g.drawRect(50,50,50,50);
//oder
Rectangle rechteck = new Rectangle(50,50,50,50);
g.fill(rechteck);

}

dann kannst du es auch im Prinzip in einer Methode ausser paint zeichnen lassen.
Musst dann nur Graphics() als Objekt erzeugen. Aber der Effekt bleibt der selbe.

Hoffe das war die Antwort auf deine Frage 🙂
 
wenn du eine Methode schreibst z.B.

Java:
public void rechteck(){

Graphics g = new Graphics();

g.drawRect(50,50,50,50);
//oder
Rectangle rechteck = new Rectangle(50,50,50,50);
g.fill(rechteck);

}

dann kannst du es auch im Prinzip in einer Methode ausser paint zeichnen lassen.
Musst dann nur Graphics() als Objekt erzeugen. Aber der Effekt bleibt der selbe.

Hoffe das war die Antwort auf deine Frage 🙂

Viel Spaß beim erzeugen eines Graphics Objektes.

Mal im Ernst. Niemand erzeugt sich per Hand ein Graphics Objekt.
Man frägt immer schön höflich beim BS an, ob man einen Stift bekommt.

Butterbemme und NobbyProg haben's schon richtig beantwortet, und wie NobbyProg schon schrieb, hält man das ganze schön in einer Datenstruktur fest.
 
Zuletzt bearbeitet:
Klar. Hast recht. Ich musste das für mein Projekt so machen um die Methode mit einem Ereignis erst aufzurufen und ein Rechteck auf dem Panel zu malen.
Ich hab nur ein teil ganzes als Bsp Vorgelegt, damit bekannt ist das es auch ohne paint geht. Wollte das ganze jetzt nicht programmieren die Grundlagen das das im BS angemeldet usw sollten jedem bekannt sein 🙂

Hab da was in der Frage missverstanden schätze ich 🙂
 

Neue Themen


Zurück
Oben