Mám JPanel, na ktorom sú rôznetvary (obdĺžniky, kruhy, obrázky a podobne), z ktorých všetky pochádzajú z „pohyblivej“ triedy (ktorá obsahuje iba súradnice stredu tvaru). Objekty sa ukladajú do arraylistov a pri každom kliknutí sa každý arraylist iteruje, aby sa skontrolovalo, či sa na neklikol tvar.
Teraz by som chcel urobiť ukazovateľtypu „pohyblivý“, ktorý ukazuje na ľubovoľný tvar kliknutia, takže keď ho nastavím vo funkcii MousePressed, môžem ho stále používať napr. vo funkcii MouseDragged môžete obrázok presúvať.
Toto správanie som bol schopný simulovať pomocou adočasná hodnota, vykonávanie operácií a nahradenie pôvodného objektu modifikovaným, ale rád by som vedel, či existuje elegantnejší spôsob, ako to urobiť.
odpovede:
0 pre odpoveď č. 1Ak je váš ukazovateľ tiež tvarom, neexistuje iný spôsob, ako vytvoriť nový. Tvary v Java sú viazané na miesto a nie je ich možné presunúť.
Ak to nie je Tvar, máte rôzne spôsobyurobiť to správne, jednoducho niekde nové miesto uložte a tam nakreslite ukazovateľ. Toto by fungovalo s obrázkom alebo s tvarom priamo nakresleným cez grafický objekt:
g.drawImage(pointerImage, pointerX, pointerY, null);
alebo
g.fillRectangle(pointerX, pointerY, width, height, null);
//or any other "g.fill..."-method;