Ist es möglich bei einem awt.Polygon einen Punkt zu verändern oder zu löschen,
oder muss man jedesmal, wenn man einen Punkt verändern will ein neues Polygon erstellen, den Rest aus dem alten kopieren und den neuen Punkt hinzufügen? :?:
also, wenn ich mir so die Dokumentation anschaue, scheint es da nicht passendes zu geben, aber das ist doch auch kein Problem, dieses "Polygon" macht ja an sich nichts, ausser zwei arrays mit koordinaten aufzubewahren. Wenn du einen Punkt nicht brauchst, löschst du eben die entsprechenden Einträge aus den beiden Arrays raus, "nennst" es wieder "Polygon" und kannst damit wieder machen was du willst... Du könntest auch versuchen vom Polygon auch einfach irgendeine Klasse abzuleiten, die für dein Programm besser geeignet ist (zB. MutablePolygon) die zusätzlich punkte rauslöschen kann...
edit: hab eben in der definition vom polygon nachgeschaut: da steht folgendes:
Code:
public int npoints;
/**
* The array of [i]x[/i] coordinates. The number of elements in
* this array might be more than the number of [i]x[/i] coordinates
* in this <code>Polygon</code>. The extra elements allow new points
* to be added to this <code>Polygon</code> without re-creating this
* array. The value of {@link #npoints npoints} is equal to the
* number of valid points in this <code>Polygon</code>.
*
* @serial
* @see #addPoint(int, int)
*/
public int xpoints[];
/**
* The array of [i]y[/i] coordinates. The number of elements in
* this array might be more than the number of [i]y[/i] coordinates
* in this <code>Polygon</code>. The extra elements allow new points
* to be added to this <code>Polygon</code> without re-creating this
* array. The value of <code>npoints</code> is equal to the
* number of valid points in this <code>Polygon</code>.
*
* @serial
* @see #addPoint(int, int)
*/
public int ypoints[];
ist doch alles public, da kannst du damit jederzeit alles machen was du willst...
Hmm.. An sich keine schlechte Idee, aber ich hab jetzt ein bisschen herumprobiert und egal wie ich es mache, das Polygon wird zwar korrekt gezeichnet, aber getBounds() wird nie aktualisiert und liefert nur falsche Ergebnisse.
Da werd ich wohl ums immer-neu-Erstellen nicht herum kommen.
naja, getBounds ist ja auch nicht unbedingt das allerkomplizierteste an so einem Polygon, kann man doch wirklich schnell überschreiben... solange diese ganzen "contains" dinger funktionieren.... Einfach ein spezielleres Polygon abzuleiten scheint hier nicht allzuschwer, dafür ersparst du dir später viel schreibarbeit...