N
newbieOntheblock
Gast
Das ist ja ein typisches Anfängerproblem (wie ich sehe) und obwohl ich ein Anfänger bin weiss ich nicht, warum es ich befällt... 
also ich weiss ja, um tolle Objekte mit Swing zu zeichnen, sollte man passiv mit paintComponent(Graphics g)
in einer Klasse arbeiten/zeichnen, die von JComponent erbt. Wie etwa im Tutorial beschrieben.
Nun ja - ich wollte gleich mehrere Objekte zeichen und dachte mir schon dass man irgendwas wie ein Array verwenden muss um sie alle "zu halten" - ich hab mich daran orientiert: www.java-forum.org/de/viewtopic.php?t=5930
Ich wollte das alles halt in der schnelle, also innerhalb einer Klasse machen und muss feststellen, dass es leider nicht klappt :? Die Objekte im Vector werden wohl bis auf das letzte gelöscht (oder vielleicht wird nur das erste gezeichnet?)
meine paintComponent:
Den Vector befüll ich mit:
hier in der main (auszug - jetzt ziemlich geschrammelt):
Ich weiss im Moment nicht mehr woran es liegen könnte...
also ich weiss ja, um tolle Objekte mit Swing zu zeichnen, sollte man passiv mit paintComponent(Graphics g)
in einer Klasse arbeiten/zeichnen, die von JComponent erbt. Wie etwa im Tutorial beschrieben.
Nun ja - ich wollte gleich mehrere Objekte zeichen und dachte mir schon dass man irgendwas wie ein Array verwenden muss um sie alle "zu halten" - ich hab mich daran orientiert: www.java-forum.org/de/viewtopic.php?t=5930
Ich wollte das alles halt in der schnelle, also innerhalb einer Klasse machen und muss feststellen, dass es leider nicht klappt :? Die Objekte im Vector werden wohl bis auf das letzte gelöscht (oder vielleicht wird nur das erste gezeichnet?)
meine paintComponent:
Code:
protected void paintComponent(Graphics g) {
if(shape!=null && c!=null){ // c ist hier color
Graphics2D g2d = (Graphics2D)g;
for (Shape po : vshape){ //vshape ist ein Vector<Shape>
g2d.setColor(c);
g2d.draw(po);
g2d.setPaint(gradientPaint);
g2d.fill(shape);
}
}
Den Vector befüll ich mit:
Code:
public void paintObj (Shape po)
{
vshape.add (po);
}
hier in der main (auszug - jetzt ziemlich geschrammelt):
Code:
int i1, i2;
double x, y;
for (i1 = 0; i1 < 2; i1++) {
x = i1 + 40;
for (i2 = 0; i2 < 2; i2++) {
y = i2 + 40;
Shape shape = new Ellipse2D.Double(x, y, 20, 20);
ellips.setColor(Color.red); //ellips ist die große Klasse
ellips.paintObj(shape);
int xi = (int)x;
int yi = (int)y;
ellips.setGradientPaint(new GradientPaint(xi, yi, Color.red, 60, 80, Color.white, false));
}
}
ellips.repaint();
Ich weiss im Moment nicht mehr woran es liegen könnte...