마우스 이벤트의 소스는 종종 컨테이너와 관련이 있습니다. 마우스가 컨테이너에 들어가거나 컨테이너를 클릭하거나 마우스를 컨테이너에서 드래그하면 발생합니다. Java 언어는 마우스 이벤트를 처리하기위한 두 가지 인터페이스의 Mouselistener 및 MouseMotionListener 인터페이스를 제공합니다.
Mouselistener 인터페이스
MouseListener 인터페이스는 5 가지 유형의 마우스 이벤트를 처리 할 수 있습니다. 마우스를 누르고 마우스를 풀고 마우스를 클릭하고 마우스를 입력하고 마우스를 종료합니다. 해당 방법은 다음과 같습니다.
(1) getx () : 마우스의 x 좌표
(2) gety () : 마우스의 y 좌표
(3) getModifiers () : 마우스의 왼쪽 또는 오른쪽 버튼을 가져옵니다.
(4) getClickCount () : 마우스를 클릭 한 횟수.
(5) getSource () : 마우스가 발생한 이벤트의 출처를 얻습니다.
(6) AddMousElistener : 모니터를 추가하십시오.
(7) RemoveMousElistener : 모니터를 제거하십시오.
Mouselistener 인터페이스를 구현하는 방법은 다음과 같습니다.
(1) 무성한 (Mouseevent e);
(2) MouserEleled (Mouseevent e);
(3) 마우스 센터 (Mouseevent e);
(4) mouseexited (mouseevent e);
(5) Mouseclicked (Mouseevent e);
[예] 애플릿은 일련의 마우스 이벤트를 기록하기 위해 텍스트 영역을 설정합니다. 마우스가 애플릿 창에 들어가면 텍스트 영역이 "마우스가 켜집니다. , 마우스를 누르면, 텍스트 영역은 "마우스를 두 번 클릭"하고 마우스의 좌표가 표시됩니다. 이 프로그램에는 또한 빨간 원이 표시되며 마우스를 클릭하면 원의 반경이 계속 커질 것입니다.
import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class mypanel은 jpanel {public void print (int r) {Graphics g = getGraphics (); g. getwidth (), g.setcolor (color.red); ts mouselistener {jtextArea 텍스트; 열기 ","마우스에서 두 번 클릭 "}; myWindow (string s) {super (s); 컨테이너 con = this.getContentPane (); con.setLayout (new GridLayout (2,1)); this.Setsize 200,300; Addmo USELISTER (this) (true); mousestates [mouseflg]+"는"+x+","+y+"/n"; e.gety (); voi d 마우스 벤트 (mouseevent e) {e.getx (); e.gety (); mouseflg = 3; mousef lg = 4;
마우스 이벤트는 모든 구성 요소에서 발생할 수 있습니다 : 마우스 입력, 마우스 종료, 마우스 프레스 등. 예를 들어, 위 프로그램에 버튼을 추가하고 버튼 객체에 마우스 모니터를 추가하고 위 프로그램의 init () 메소드를 다음 형식으로 수정합니다. 즉, 버튼의 모든 마우스 이벤트를 표시 할 수 있습니다.
JBUTTON 버튼; public void init () {button = "버튼에서 마우스 이벤트가 발생할 수 있습니다"; 버튼. 추가 MousElistener 추가 (this);}
프로그램이 왼쪽 또는 오른쪽 마우스 버튼을 누르거나 클릭 한 것을 더 알고 싶다면 마우스의 왼쪽 또는 오른쪽 마우스 버튼은 Inputevent 클래스의 상수 Button1_mask 및 Button3_mask에 의해 결정될 수 있습니다. 예를 들어, 다음 표현식은 오른쪽 마우스 버튼이 누락되었는지 또는 마우스 오른쪽 버튼을 클릭했는지 여부를 결정합니다.
e.getModifiers () == inputevent
MouseMotionListener 인터페이스
MouseMotionListener 인터페이스는 마우스를 드래그하고 마우스를 움직이는 두 가지 이벤트를 처리합니다.
모니터를 등록하는 방법은 다음과 같습니다.
AddMouseMotionListener (모니터)
구현해야 할 두 가지 인터페이스 방법이 있습니다.
(1) MousedRagged (Mouseevent e)
(2) Mousemoved (Mouseevent E)
[예] 스크롤 막대가 디스플레이 창과 동시에 변경되는 응용 프로그램. 창에 정사각형이 있습니다. 마우스를 사용하여 사각형을 드래그하거나 마우스가 표시되며 해당 수평 및 수직 스크롤 막대의 슬라이더도 스크롤에서 위치가 변경됩니다. 술집. 반대로, 스크롤 바의 슬라이더가 움직이면 창의 정사각형의 디스플레이 위치도 변경됩니다.
import javax.swing.*; import java.awt.*; import java.awt.event.*; 클래스 myWindow는 jframe {public myWindow (string s) {super (s); getContentPane (); con .setlayout (new borderlayout ()); MyListener 청취자 = Xaxis, 238,118); , ScrolledCanvas 새로운 차원 (500,300)} MyListener는 MousElistener를 구현합니다. int) ((float) getsize (). 너비)*100.0); d = (int); *100.0); yscrollbar yscrollbar .FillRect (0,0, Size.Height) G.FillRect (X, Y, 50,50); 마우스 exited (mouseevent e) {} public void mouseclicked (mouseevent e) {} public void mouserelease (mouseevent e) {} public void mousemoved (mouseevent e) {} public void mo usepressed (mouseevent e) {x = e.getx y.gety (x, y); y); public void trectionmentvaluechanged (e.getSource () == xscrollbar) x = (int) (xscrollbar.getValue ()/100.0)*ge tsize ( .width); else (e. getSource () == yscrollbar) y = (int) (yscrollbar.getValue ()/100.0)*getsize () example6_9 {public static void main () {myWindow myWindow = 새로운 myWindow ( "스크롤 바 회로 프로그램")};
위의 예에서는 슬라이더를 슬라이딩하여 컨텐츠의 디스플레이 위치 만 변경하면 스크롤 패널 JSCrollPane을 사용할 수 있습니다. 그렇다면 스크롤 바 생성 및 제어는 JSCrollpane에 의해 직접 피하고 구현 될 수 있습니다. MyWindow의 다음 수정 된 정의를 참조하십시오.
MyWindow는 jframe {super (s) {getContentPane (); 청취자는 새로운 차원 (700,700); () {return new Dimension (400,400)}}
마우스 포인터 모양은 또한 프로그램에 의해 제어 될 수 있으며, setCursor () 메소드는 마우스 포인터 모양을 설정할 수 있습니다. 예를 들어, 코드 setCursor (cursor.getPredefinedCursor (cursor.wait_cursor)).