g.drawPolyline Größenanpassung

Status
Nicht offen für weitere Antworten.

Vitali

Mitglied
Hallo alle zusammen,

aaaalso:

wir sollen, von der Uni aus, ein Programm zur grafischen Darstellung von Funktionen schreiben.
Ansich kein großes Problem.
Doch wenn ich versuche mein JApplet-Fenster größer zu ziehen zeichnet Java den Graf mit jeder bewegung neu (an sich auch nicht schlimm) und die alten Grafen bleiben stehen. :autsch:

Java:
	public void init() {
		double u_dsmax = 6.5;
		final double DU = 0.1;
		int anzahl = (int) (u_dsmax / DU) + 1;
		double u_gs = 5.5;
		double u_th = 1.5;
		u_ds = new double [anzahl];
		i_d = new double [anzahl];
		
		
		
		for (int i=0; i < anzahl; i++){
			u_ds[i]=i*DU;
			i_d[i]= berechneDrainstrom(u_ds[i],u_gs,u_th);
		}
	}

	@Override
	public void paint(Graphics g) {
		final int RAND = 30;
		int b = getWidth();
		int h = getHeight();
		int[] xCoord = berechneKoordinaten(u_ds,RAND,b,false);
		int[] yCoord = berechneKoordinaten(i_d,h-RAND,h,true);
		
		g.drawPolyline(xCoord,yCoord,xCoord.length);

Das ganze Programm hab ich bewusst nicht hochgeladen (da sind noch ein paar unterprogramme dabei). Ich will eigendlich auch nur wissen wie ich Java sage: lösche den alten Graf bevor du denn neuen zeichnest ???:L

Danke im Vorraus
Vitali
 

Developer_X

Top Contributor
du musst schon das ganze paint zeigen, möglicherweise wird am ende der paintmethode,
die momentane Grafik in G gespeichert, und wenn paint neu aufgerufen wird, zeichnet es zuerst einmal was es schon im Speicher hat, und dann noch den rest.
Gibt es irgendwo diese zeile?
Java:
g = g.getGraphics();
Dürfte am ende sein, wo nichts mehr danach kommt.
 

Vitali

Mitglied
nun
Java:
		g.drawPolyline(xCoord,yCoord,xCoord.length);
steht ja da und paint hört nach dieser zeile auch auf (wie auch mein programm)

wenn ich "g =" daforschreibe unterringelt eclipse den rest (g.drawPolyline(xCoord,yCoord,xCoord.length); )

mit "cannot convert from void to Grafics"
 

Developer_X

Top Contributor
nun
Java:
		g.drawPolyline(xCoord,yCoord,xCoord.length);
steht ja da und paint hört nach dieser zeile auch auf (wie auch mein programm)

wenn ich "g =" daforschreibe unterringelt eclipse den rest (g.drawPolyline(xCoord,yCoord,xCoord.length); )

mit "cannot convert from void to Grafics"

Das ist ja klar, dass g (eine Grafik) sich nicht gleichen lässt mit einer Methode (einem Void).

Kannst du mal ein Bild von dem Fenster machen, und es hier anhängen?
 

Ein Keks

Bekanntes Mitglied
@devX laber net soviel
@vitali
Java:
g.clearRect(x,y,width,height);
beziehungsweise
Java:
g.setColor(Color.white); //hintergrundfarbe
g.drawRect(x,y,width,height);

desweiteren solltest du bei swing nicht die paint-methode überschreiben sondern lieber ein JPanel drauf legen und dort paintComponent(Graphics g) nehmen
 

Marco13

Top Contributor
@Developer_X: :noe:

Schreib' mal in die erste Zeile der paint-Methode
Code:
public void paint(Graphics g) {
    super.paint(g); // <-- das hier

Eigentlich ist es besser, in ein JPanel zu zeichnen, das im ContentPane vom Applet liegt, und bei dem JPanel dann in der paintComponent-Methode zu zeichnen.

Im zweifelsfall kannst du den Hintergrund aber auch löschen, indem du am Anfang der paint ein
Code:
g.setColor(getBackground());
g.fillRect(0,0,getWidth(),getHeight());
machst.


EDIT: @Ein Keks: :D
 

Vitali

Mitglied
@Ein Keks

sorry deine Lösung überschreibt den Grafen (vieleicht hab ichs auch an ner verkehrten stelle gestetzt, egal)

@Marco
super.paint funkioniert super :toll:
den rest hab ich nicht probiert aber muss ich auch nicht

AUF JEDENFALL RIIIIIESEN DANKE AN ALLE DIE SICH HEUTE FÜR MICH ZEIT GENOMMEN HABEN

Vitali
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R drawPolyLine/fillPolyLine Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben