2D-Grafik Fehler beim Überzeichnen von Linien

JuraX

Mitglied
Hi Community,
Ich versuche je nach status eines Objekts die Linie einzufärben.
Die Linien werden aber nicht richtig überzeichnet, sonder behalten ihre alte farbe, obwohl er die Farbe intern richtig setzt.
Sieht einer das Problem ?
Hier der Code zu GraphicInception:
Java:
package gui.TC.main;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.util.ArrayList;

import main.Inception;
import core.TC.etc.Leitung;
import core.TC.etc.MyWindowListener;

public class GraphicInception extends Frame {
	/**
	 * 
	 */
	MyWindowListener mwl = new MyWindowListener();
	int[] coo;
	private static final long serialVersionUID = 1L;
	ArrayList<Leitung> leitung = Inception.getLeitung();
	int nul = 120;
	public Graphics gR;

	public GraphicInception() {
		super("ThunderClap-Map");
		this.setSize(500, 200);
		this.addWindowListener(mwl);
		this.setVisible(true);
		this.setAlwaysOnTop(true);
	}

	@Override
	public void paint(Graphics g) {
	
	}

	public void renderScreen() throws InterruptedException {

		Graphics g = getGraphics();
		g.setPaintMode();
		for (Leitung i : leitung) {
			coo = i.getCoordinaten();
			int ixx = coo.length;
			for (int ix = 0; ix < ixx; ix++) {
				coo[ix] += nul;

			}

			if (i.isRunning()) {
				g.setColor(Color.GREEN);
			} else if (!(i.isRunning())) {
				g.setColor(Color.RED);
			} else {
				g.setColor(Color.BLACK);
			}
			int x1 = coo[0];
			int y1 = coo[1];
			int x2 = coo[2];
			int y2 = coo[3];
			g.drawLine(x1, y1, x2, y2);
			g.setColor(Color.BLUE);
			g.fillRect(nul - 10, nul - 10, 20, 20);
			g.setColor(Color.BLACK);
		}

	}
}
und der zu Renderer:
Java:
package gui.TC.main;


public class Renderer extends Thread {
	final GraphicInception Gi = new GraphicInception();

	@Override
	public void run() {
		while (true) {
			try {
				Gi.renderScreen();

				Thread.sleep(200);
			} catch (InterruptedException ex) {
			}
		}
	}
}
 
G

Gast2

Gast
IMMER von der paint bzw. paintComponent Methode aus zeichen. ein aufruf von getGraphics ist in der Regel immer falsch.
wenn du in der paint methode dann super.paint(g); aufrufst wird dein altes Bild "gelöscht"
 

JuraX

Mitglied
Der Fehler tritt leider immernoch auf...
Die Klasse ist jetzt:
Java:
package gui.TC.main;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.util.ArrayList;

import main.Inception;
import core.TC.etc.Leitung;
import core.TC.etc.MyWindowListener;

public class GraphicInception extends Frame {
	/**
	 * 
	 */
	MyWindowListener mwl = new MyWindowListener();
	int[] coo;
	private static final long serialVersionUID = 1L;
	ArrayList<Leitung> leitung = Inception.getLeitung();
	int nul = 120;
	public Graphics gR;

	public GraphicInception() {
		super("ThunderClap-Map");
		this.setSize(500, 200);
		this.addWindowListener(mwl);
		this.setVisible(true);
		this.setAlwaysOnTop(true);
	}

	@Override
	public void paint(Graphics g) {
		super.paint(g);
		g.setPaintMode();
		for (Leitung i : leitung) {
			coo = i.getCoordinaten();
			int ixx = coo.length;
			for (int ix = 0; ix < ixx; ix++) {
				coo[ix] += nul;

			}

			if (i.isRunning()) {
				g.setColor(Color.GREEN);
			} else if (!(i.isRunning())) {
				g.setColor(Color.RED);
			} else {
				g.setColor(Color.BLACK);
			}
			int x1 = coo[0];
			int y1 = coo[1];
			int x2 = coo[2];
			int y2 = coo[3];
			g.drawLine(x1, y1, x2, y2);
			g.setColor(Color.BLUE);
			g.fillRect(nul - 10, nul - 10, 20, 20);
			g.setColor(Color.BLACK);
		}
	}

}
 

Ein Keks

Bekanntes Mitglied
Passive-Rendering ist in den meisten Fällen sinnvoller, aber zumindest wurde hier getGraphics() richtig eingesetzt (falls das möglich ist ;)). Was allerdings fehlt ist, wie EikeB schon gesagt hat, dass du den Bildschirm auch wieder löschen musst - g.fillRect mit der Hintergrundfarbe. Außerdem würde ich noch empfehlen auf ein Canvas zu malen und nicht direkt auf das Frame und das Graphics-Object muss auch wieder freigegeben werden mit dispose(). Desweiteren solltest du wenn du auf Active-Rendering bestehst, dir mal Double-Buffering und die Klasse BufferStrategy angucken.
Oder du machst es dir leicht und benutzt Swing statt Awt überschreibst in einem JPanel die paintComponent, malst in dieser und rufst repaint auf wenns ma neu gezeichnet werden soll :D

edit: etwas lang gebraucht zum schreiben... rufst du repaint auf damits auch neu gezeichnet wird?
 
Zuletzt bearbeitet:

JuraX

Mitglied
Jo, ich habs jetzt so gemacht, aber nach der 1. Aktualisierung kommt nur noch der blaue kasten...
Java:
package gui.TC.main;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.util.ArrayList;

import javax.swing.JPanel;

import main.Inception;
import core.TC.etc.Leitung;
import core.TC.etc.MyWindowListener;

public class GraphicInception extends Frame {
	/**
	 * 
	 */
	MyWindowListener mwl = new MyWindowListener();
	int[] coo;
	private static final long serialVersionUID = 1L;
	ArrayList<Leitung> leitung = Inception.getLeitung();
	int nul = 120;
	JPanel jp = new JPanel();

	public GraphicInception() {
		super("ThunderClap-Map");
		this.setSize(500, 200);
		this.addWindowListener(mwl);
		this.setVisible(true);
		this.setAlwaysOnTop(true);
		this.add(jp);
		while (true) {
			try {
				Thread.sleep(1000);
				repaint();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	@Override
	public void paint(Graphics g) {
		for (Leitung i : leitung) {
			coo = i.getCoordinaten();
			int ixx = coo.length;
			for (int ix = 0; ix < ixx; ix++) {
				coo[ix] += nul;

			}

			if (i.isRunning()) {
				g.setColor(Color.GREEN);
			} else if (!(i.isRunning())) {
				g.setColor(Color.RED);
			} else {
				g.setColor(Color.BLACK);
			}
			int x1 = coo[0];
			int y1 = coo[1];
			int x2 = coo[2];
			int y2 = coo[3];
			g.drawLine(x1, y1, x2, y2);
			g.setColor(Color.BLUE);
			g.fillRect(nul - 10, nul - 10, 20, 20);
			g.setColor(Color.BLACK);
		}

		g.setColor(Color.BLACK);
	}
}
 
Zuletzt bearbeitet:

JuraX

Mitglied
Wie gesagt, die Linien werden nach dem 1. Durchlauf nicht mehr nachgezeichnet, obwohl die methode die richtigen Parameter bekommt. Das ist das Problem im Moment.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Testen kann das wegen der Abhängigkeiten zu anderen Klassen niemand :bahnhof:

Trotz aller Unzulänglichkeiten und Fragwürdigkeiten beim bestehenden Code: Schreib mal ein
Code:
public void paint(Graphics g) {
    [b]super.paint(g);[/b]
    ...
da rein.

Besser: Lies den oben verlinkten Thread!!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
S Fehler beim Zweites 3D Bild AWT, Swing, JavaFX & SWT 2
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
J Fehler beim Einklappen eines Trees AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
hdi Swing JTable: Fehler beim Nutzen von RowSorter#setRowFilter AWT, Swing, JavaFX & SWT 4
M Fehler beim Zugriff von awt-KeyListener auf swt-Shell AWT, Swing, JavaFX & SWT 2
P Fehler beim Einlesen eines JTextFields AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
A Fehler beim Auslesen aus einem Textfeld AWT, Swing, JavaFX & SWT 2
spacegaier Fehler beim Aufrufen von Dialog aus ActionListener AWT, Swing, JavaFX & SWT 12
P Fehler beim Verwenden von swt.jar mit NetBeans AWT, Swing, JavaFX & SWT 2
S Fehler beim Auslesen des Textes im textfield AWT, Swing, JavaFX & SWT 8
T Fehler beim Compilieren AWT, Swing, JavaFX & SWT 29
S Fehler beim addTextListener . AWT, Swing, JavaFX & SWT 2
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
J Fehler bei jFame.setTitle() AWT, Swing, JavaFX & SWT 8
thor_norsk SpringBoot-Fehler AWT, Swing, JavaFX & SWT 7
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
A eine Fehler AWT, Swing, JavaFX & SWT 9
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
E Fehler bei Button AWT, Swing, JavaFX & SWT 1
L Unbekannter Fehler AWT, Swing, JavaFX & SWT 13
I Fehler bei Alert AWT, Swing, JavaFX & SWT 6
J Fehler bei PixelColor erkennung AWT, Swing, JavaFX & SWT 4
T Fehler bei ActionEvent? AWT, Swing, JavaFX & SWT 3
V Fehler bei Würfelsimulator GUI AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
Seikuassi SWING - (Hoffentlicher) simpler Color-Fehler AWT, Swing, JavaFX & SWT 4
M Swing finde den fehler nicht AWT, Swing, JavaFX & SWT 9
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
D Unlogischer Fehler? AWT, Swing, JavaFX & SWT 2
L Eclipse Fehler besser zu verstehen!!! AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
H GUI-Textausgabe Fehler AWT, Swing, JavaFX & SWT 5
S String is null Fehler AWT, Swing, JavaFX & SWT 2
P Swing GroupLayout() Fehler? AWT, Swing, JavaFX & SWT 3
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
N Touchscreen-Scrollen, wo liegt der Fehler? AWT, Swing, JavaFX & SWT 3
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
M GEF tutorial Fehler finden AWT, Swing, JavaFX & SWT 4
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Fehler bei Arrayübergabe an JComboBox AWT, Swing, JavaFX & SWT 10
S LayoutManager Fehler gesucht 18.6.2011 AWT, Swing, JavaFX & SWT 4
C Fehler nur bei manchen Usern AWT, Swing, JavaFX & SWT 8
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
E Swing Fehler nach Befüllen einer JTable mit gesetzem Rowsort?! AWT, Swing, JavaFX & SWT 10
P Swing Misteriöser Fehler JTable AWT, Swing, JavaFX & SWT 5
Y Swing JPasswordField Fehler AWT, Swing, JavaFX & SWT 14
A Swing Unknown Source Fehler AWT, Swing, JavaFX & SWT 9
N Fehler bei Grouplayout AWT, Swing, JavaFX & SWT 17
S ActionPerformed Fehler... AWT, Swing, JavaFX & SWT 9
C BufferedImage-Fehler? Falsches Bild wir gezeichnet AWT, Swing, JavaFX & SWT 5
A Tabellen Überschriften ändern -setColumnIdentifiers()- Fehler AWT, Swing, JavaFX & SWT 7
M.F.G. Fehler bei der Anzeige Grafischer Elemente AWT, Swing, JavaFX & SWT 13
D Swing Verwirrender Fehler AWT, Swing, JavaFX & SWT 7
J Fehler in fillRoundRect AWT, Swing, JavaFX & SWT 2
D Probleme mit Spiel-Engine. Komische Fehler. AWT, Swing, JavaFX & SWT 5
W fehler jedoch ka wo AWT, Swing, JavaFX & SWT 14
F Fehler in der Startklasse AWT, Swing, JavaFX & SWT 13
A Fehler bei der Parametereingabe? AWT, Swing, JavaFX & SWT 16
P finde den Fehler im JTable nicht AWT, Swing, JavaFX & SWT 2
Spin Fehler in Vergleich AWT, Swing, JavaFX & SWT 6
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
T Invalid Range - Fehler bei TableRowSorter / Tabelle AWT, Swing, JavaFX & SWT 17
DasDogma Fehler bei getText() AWT, Swing, JavaFX & SWT 10
I Fehler bei verschachtelten JScrollPanes AWT, Swing, JavaFX & SWT 2
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
K Textfelder auslesen gibt immer Fehler AWT, Swing, JavaFX & SWT 2
D Fehler bei Button Array AWT, Swing, JavaFX & SWT 8
M Fehler mit Jigloo AWT, Swing, JavaFX & SWT 3
M setColor mit Fehler cannot fiend symbol (java.awt.Color) AWT, Swing, JavaFX & SWT 2
Z habe code, habe fehler, habe keine lösung AWT, Swing, JavaFX & SWT 7
R JComboBox Fehler AWT, Swing, JavaFX & SWT 7
B NPE-Fehler AWT, Swing, JavaFX & SWT 11
P JRadioButton in Schleife erstellen > wo liegt mein Fehler AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben