Hallo zusammen,
ich bin noch relativ am Anfang meiner Javakünste und hänge im Moment stark. Jetzt hoffe ich, dass ihr mir helfen könnt:
Ich habe ein GUI entwickelt, auf dem ich verschiedene Figuren abbilden möchte. Mein GUI ist ein JFrame in das ich ein Objekt "Anzeige" der Klasse "Zeichnung" gesetzt habe.
Nun habe ich eine Klasse "Zeichnung", die ein "extends JComponent" enhält, erstellt und dort die die Methode paintComponent() überschrieben. Wenn ich nun in meinem GUI nacheinander einige Objekte zeichnen möchte, erhalte ich in meinem GUI nur das letzte definierte Objekt. Selbst wenn ich nur einmal das repaint() aufrufe, erhalte ich nur das letzte Objekt. Kann mir einer sagen, was ich falsch mache?
Meine Methode im GUI:
Meine Klasse Zeichnung:
Vielen Dank schon jetzt für die, die sich da hineindenken!
ich bin noch relativ am Anfang meiner Javakünste und hänge im Moment stark. Jetzt hoffe ich, dass ihr mir helfen könnt:
Ich habe ein GUI entwickelt, auf dem ich verschiedene Figuren abbilden möchte. Mein GUI ist ein JFrame in das ich ein Objekt "Anzeige" der Klasse "Zeichnung" gesetzt habe.
Nun habe ich eine Klasse "Zeichnung", die ein "extends JComponent" enhält, erstellt und dort die die Methode paintComponent() überschrieben. Wenn ich nun in meinem GUI nacheinander einige Objekte zeichnen möchte, erhalte ich in meinem GUI nur das letzte definierte Objekt. Selbst wenn ich nur einmal das repaint() aufrufe, erhalte ich nur das letzte Objekt. Kann mir einer sagen, was ich falsch mache?
Meine Methode im GUI:
Code:
public void zeichne()
{
Anzeige.setzeFarbe("schwarz");
Anzeige.setzeFigur(new Ellipse2D.Float(20, 300, 10, 10));
Anzeige.repaint();
Anzeige.setzeFigur(new Ellipse2D.Float(300, 20, 10, 10));
Anzeige.repaint();
Anzeige.setzeFigur(new Line2D.Float(20, 300, 300, 20));
Anzeige.setzeLinienstaerke(3);
Anzeige.repaint();
}
Meine Klasse Zeichnung:
Code:
import java.awt.*;
import javax.swing.*;
class Zeichnung extends JComponent
{
private static int linienstaerke = 1;
private Shape figur;
private String farbe;
private Image zeichnungsImage;
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(figur!=null && farbe!=null)
{
Graphics2D g2d = (Graphics2D)g;
if (farbe.equals("rot"))
{
g2d.setColor(Color.red);
}
else if (farbe.equals("schwarz"))
{
g2d.setColor(Color.black);
}
else if (farbe.equals("blau"))
{
g2d.setColor(Color.blue);
}
else if (farbe.equals("gelb"))
{
g2d.setColor(Color.yellow);
}
else if (farbe.equals("gruen"))
{
g2d.setColor(Color.green);
}
else if (farbe.equals("lila"))
{
g2d.setColor(Color.magenta);
}
else if (farbe.equals("orange"))
{
g2d.setColor(Color.orange);
}
else
{
g2d.setColor(Color.black);
}
g2d.setStroke(new BasicStroke(linienstaerke));
g2d.fill(figur);
g2d.draw(figur);
}
}
public void setzeLinienstaerke(int linienstaerke)
{
this.linienstaerke = linienstaerke;
}
public void setzeFarbe(String farbe) {
this.farbe = farbe;
}
public void setzeFigur(Shape figur) {
this.figur = figur;
}
}
Vielen Dank schon jetzt für die, die sich da hineindenken!
