/ / Zisťovanie, na ktorý tvar / obrázok bolo kliknuté na JPanel a nastavenie ukazovateľa na iné funkcie, ktoré sa majú použiť - java, arraylist, mouselistener

Zisťovanie toho, ktorý tvar / obrázok na JPanel bol kliknutý a nastavenie ukazovateľa na to pre ďalšie funkcie na použitie - java, arraylist, mouselistener

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ď č. 1

Ak 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;