G
Guest
Gast
Hallo, ich habe eine Übungsaufgabe aus einem Buch (Java für Studenten) versucht zu lösen.
Aufgabe war, dass eine symbolische Schildkröte einen Stift auf dem Bauch hat und man via Button,
das Teil bewegen kann. Warum werden aber alle gezeichneten Linien wieder 'gelöscht' wenn das nächste
mal paint aufgerufen wird? Vielen Dank vorab. Wenn es andere Hinweise oder Verbesserungen gibt,
dann bin ich auch da nicht abgeneigt.
Denke, dass ich das auch fast hin bekommen habe, aber waru
Aufgabe war, dass eine symbolische Schildkröte einen Stift auf dem Bauch hat und man via Button,
das Teil bewegen kann. Warum werden aber alle gezeichneten Linien wieder 'gelöscht' wenn das nächste
mal paint aufgerufen wird? Vielen Dank vorab. Wenn es andere Hinweise oder Verbesserungen gibt,
dann bin ich auch da nicht abgeneigt.
Denke, dass ich das auch fast hin bekommen habe, aber waru
Code:
import java.applet.Applet;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.Scrollbar;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
public class Schildkroete extends Applet implements AdjustmentListener, ActionListener{
private Scrollbar schieber;
private int schiebewert;
private int startX = 100;
private int startY = 100;
private int endeX = 100;
private int endeY = 100;
private int status = 1;
private Button stifthoch, stiftrunter, links90, rechts90, nPixelVorwaertsGehen;
public void init(){
setSize(500, 500);
schieber = new Scrollbar(Scrollbar.HORIZONTAL, 0,1,0,100);
add(schieber);
schieber.addAdjustmentListener(this);
stifthoch = new Button("Stift hoch");
add(stifthoch);
stifthoch.addActionListener(this);
stiftrunter = new Button("Stift runter");
add(stiftrunter);
stiftrunter.addActionListener(this);
links90 = new Button("90 Grad links");
add(links90);
links90.addActionListener(this);
rechts90 = new Button("90 Grad rechts");
add(rechts90);
rechts90.addActionListener(this);
nPixelVorwaertsGehen = new Button("n Pixel vorwärts");
add(nPixelVorwaertsGehen);
nPixelVorwaertsGehen.addActionListener(this);
}
public void adjustmentValueChanged(AdjustmentEvent e) {
schiebewert = schieber.getValue();
// TODO Auto-generated method stub
}
public void paint (Graphics g){
System.out.println("Ergebnis startx + schiebwert: " + (startX + schiebewert));
System.out.println("Schiebewert: " + schiebewert);
System.out.println("startX: " + startX);
System.out.println("startY: " + startY);
System.out.println("endeX: " + endeX);
System.out.println("endY: " + endeY);
g.drawLine(startX, startY, endeX, endeY );
g.drawString(String.valueOf(schiebewert) , 50, 100);
startY = endeY;
startX = endeX;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == stifthoch)
{
endeY = startY - schiebewert;
status = 2;
}
if (e.getSource() == stiftrunter)
{
endeY = startY + schiebewert;
status = 4;
}
if (e.getSource() == links90)
{
switch (status)
{
case 1: endeY = startY - schiebewert; status = 2; break;
case 2: endeX = startX - schiebewert; status = 3; break;
case 3: endeY = startY + schiebewert; status = 4; break;
case 4: endeX = startX + schiebewert; status = 1; break;
}
}
if (e.getSource() == rechts90)
{
switch (status)
{
case 3: endeY = startY - schiebewert; status = 2; break;
case 4: endeX = startX - schiebewert; status = 3; break;
case 1: endeY = startY + schiebewert; status = 4; break;
case 2: endeX = startX + schiebewert; status = 1; break;
}
}
if (e.getSource() == nPixelVorwaertsGehen)
{
System.out.println("endeX ist vor der Zuweisung: " + endeX);
System.out.println("schiebewert ist: " + schiebewert);
System.out.println("ok, hier nochmal: endeX ist hier: " + endeX);
switch (status)
{
case 2: endeY = startY - schiebewert; status = 2; break;
case 3: endeX = startX - schiebewert; status = 3; break;
case 4: endeY = startY + schiebewert; status = 4; break;
case 1: endeX = startX + schiebewert; status = 1; break;
}
repaint();
}
}
}