cwicz12







POJ 12



Drag'n'Drop
Wstępna implementacja technologii przeciągnij i upuść




W oknie Swingowym (JFrame) należy umieścić kilka etykiet (JLabel),
najlepiej w szachownicy.
Jedna z nich ma zawierać ikonę (najlepiej o prostym kształcie - koło, kwadrat).
Dodatkowo należy utworzyć osobną etykietę, która początkowo nie będzie widoczna
- będzie służyła do wizualizacji przeciąganej ikony.
Cała praca ma się odbywać w metodach obsługujących zdarzenia pochodzące od myszki.



Po naciśnięciu klawisza myszki (mousePressed()) w polu etykiety zawierającej
ikonę należy:


usunąć ikonę z tej etykiety - setIcon(null)


wyświetlić wcześniej pobraną ikonę z tej etykiety (getIcon()) na dodatkowej
etykiecie (setIcon()) i uwidocznić ją (setVisible(true)).


Położenie dodatkowej etykiety ustala się metodą setBounds().
Potrzebne wartości określające położenie można uzyskać metodami getX(), getY()
z obiektu klasy Component, jak również ze zdarzenia MouseEvent.


Podczas przeciągania myszki (mouseDragged()) należy zmieniać lokalizację
dodatkowej etykiety metodą setBounds() pobierając informację o położeniu jak wyżej.


Zwalniając klawisz myszki (mouseReleased()) należy:


sprawdzić w obszarze którego komponentu znajduje się kursor myszki


wyświetlić na nim ikonę znajdującą się na dodatkowej etykiecie


uczynić dodatkową etykietę niewidoczną (setVisible(false)).





Uwagi:


Etykiety tworzące szachownicę dodajemy do kontenera getContentPane() głównego okna.


Etykietę służącą do wizualizacji przeciąganej ikony dodajemy do warstwy
JLayeredPane.DRAG_LAYER kontenera getLayeredPane() metodą
add(Component, int) z klasy JLayeredPane.


Dodatkowa etykieta ma być widoczna tylko podczas wleczenia (setVisible()).


Aby tła etykiet tworzących szachownicę były widoczne, należy wydać im polecenie
setOpaque(true).




Zadania dodatkowe:


Uniemożliwić upuszczenie ikony na jedną z etykiet - np. zawierającą już jakąś ikonę.


Przeciągać tylko po naciśnięciu klawisza myszy w obszarze ikony.




Użyteczne funkcje:
Z tych metod trzeba będzie korzystać:


Klasa JLabel


setOpaque() - ustala przezroczystość.


setVisible() - ustala widoczność.


setPreferredSize() - preferowany rozmiar.


setHorizontalAlignment() - położenie ikony w etykiecie.


getIcon(), setIcon() - pobranie i ustalenie ikony.


getX(), getY() - położenie lewego-górnego rogu.


setBounds() - umiejscowienie etykiety w kontenerze.


getLocation() - położenie etykiety.





Inne klasy:



JPanel : getComponentAt() - jaki komponent leży w miejscu podanym jako argument.


MouseEvent : getX(), getY() - gdzie wystąpiło zdarzenie.










Wyszukiwarka

Podobne podstrony:
cwicz10
cwicz10
cwicz10
cwicz11
Cwicz1
cwicz11 15
Cwicz12 2
cwicz13
cwicz11
Cwicz11 2
Cwicz11
cwicz10 11
cwicz13 14
cwicz12
Cwicz11Kolokwium
Cwicz12
Cwicz10

więcej podobnych podstron