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
 
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.
 
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"
 
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?
 
@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
 
@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: 😀
 
@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.

Neue Themen


Zurück
Oben