Event
MOUSE EVENT
-
01.MouseClickedマウスがクリックされた2020/07/23
-
02.MousePressedマウスのボタンが押された2020/07/23
-
03.MouseReleasedマウスのボタンが放された2020/07/23
-
04.MouseEnteredマウスカーソルがコントロールの領域内に入った2020/07/23
-
05.MouseExitedマウスカーソルがコントロールの領域外を出た2020/07/23
-
06.MouseMovedマウスカーソルが移動した2020/07/23
-
07.DragDetectedマウスドラッグが開始された2020/08/10
-
08.MouseDraggedマウスドラッグしている2020/08/10
MouseEventは「マウス操作に関するイベント」です。
MouseEventを設定する方法には、いくつかの方法がありますが、ここでは次の2つの設定方法について説明していきます。
- addEventHandler
- : addEventHandlerメソッドを利用して、その引数でイベントの種類を指定する
- setOnMouseAction
- : イベント毎にsetOnMouseActionメソッドを指定する方法
どちらの方法でイベント処理を設定する場合でも、実際の動作ロジックは、ラムダ式を用いて設定するのが一般的です。下記のサンプルでは、イベント発生時に、そのイベント名を標準出力にする処理を行っています。
01.MouseClicked [マウスがクリックされた]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_Clicked extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent MousedClicked"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // MouseClickedのEventを設定(2パターン) label . addEventHandler( MouseEvent.MOUSE_CLICKED , event -> System . out . println( "MOUSE EVENT MOUSE_CLICKED 1" ) ); label . setOnMouseClicked( event -> System . out . println( "MOUSE EVENT MOUSE_CLICKED 2" ) ); } }
Label部分をクリックすると標準出力に下記の通り表示される
-
MOUSE EVENT MOUSE_CLICKED 1 MOUSE EVENT MOUSE_CLICKED 2
02.MousePressed [マウスのボタンが押された]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_Pressed extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent MousePressed"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // MousePressedのEventを設定(2パターン) label . addEventHandler( MouseEvent.MOUSE_PRESSED , event -> System . out . println( "MOUSE EVENT MOUSE_PRESSED 1" ) ); label . setOnMousePressed( event -> System . out . println( "MOUSE EVENT MOUSE_PRESSED 2" ) ); } }
Label部分でマウスのボタンをプッシュすると標準出力に下記の通り表示される
-
MOUSE EVENT MOUSE_PRESSED 1 MOUSE EVENT MOUSE_PRESSED 2
03.MouseReleased [マウスのボタンが放された]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_Released extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent MouseReleased"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // MouseReleasedのEventを設定(2パターン) label . addEventHandler( MouseEvent.MOUSE_RELEASED , event -> System . out . println( "MOUSE EVENT MOUSE_RELEASED 1" ) ); label . setOnMouseReleased( event -> System . out . println( "MOUSE EVENT MOUSE_RELEASED 2" ) ); } }
Label部分でマウスのボタンをプッシュして、放す(リリースする)と標準出力に下記の通り表示される
-
MOUSE EVENT MOUSE_RELEASED 1 MOUSE EVENT MOUSE_RELEASED 2
04.MouseEntered [マウスカーソルがコントロールの領域内に入った]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_MouseEnterd extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent MouseEntered"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // MouseEnteredのEventを設定(2パターン) label . addEventHandler( MouseEvent.MOUSE_ENTERED , event -> System . out . println( "MOUSE EVENT MOUSE_ENTERED 1" ) ); label . setOnMouseEntered( event -> System . out . println( "MOUSE EVENT MOUSE_ENTERED 2" ) ); } }
Labelにマウスカーソルが乗ると標準出力に下記の通り表示される
-
MOUSE EVENT MOUSE_ENTERED 1 MOUSE EVENT MOUSE_ENTERED 2
05.MouseExited [マウスカーソルがコントロールの領域外を出た]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_MouseExited extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent MouseExited"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // MouseExitedのEventを設定(2パターン) label . addEventHandler( MouseEvent.MOUSE_EXITED , event -> System . out . println( "MOUSE EVENT MOUSE_EXITED 1" ) ); label . setOnMouseExited( event -> System . out . println( "MOUSE EVENT MOUSE_EXITED 2" ) ); } }
Labelの上にあるマウスカーソルが、Label領域外にでると標準出力に下記の通り表示される
-
MOUSE EVENT MOUSE_EXITED 1 MOUSE EVENT MOUSE_EXITED 2
06.MouseMoved [マウスカーソルが移動した]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_MouseMoved extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent MouseMoved"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // MouseMovedのEventを設定(2パターン) label . addEventHandler( MouseEvent.MOUSE_MOVED , event -> System . out . println( "MOUSE EVENT MOUSE_MOVED 1" ) ); label . setOnMouseMoved( event -> System . out . println( "MOUSE EVENT MOUSE_MOVED 2" ) ); } }
Labelの上でマウスポインタが動くと標準出力に下記の通り表示される
-
MOUSE EVENT MOUSE_MOVED 1 MOUSE EVENT MOUSE_MOVED 2
07.DragDetected [マウスドラッグが開始された]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_DragDetected extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent DragDetected"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // DragDetectedのEventを設定(2パターン) label . addEventHandler( MouseEvent.DRAG_DETECTED , event -> System . out . println( "MOUSE EVENT DRAG_DETECTED 1" ) ); label . setOnDragDetected( event -> System . out . println( "MOUSE EVENT DRAG_DETECTED 2" ) ); } }
Labelをクリックしたままマウスを動かすと1度だけ標準出力に下記の通り表示される。再度このイベントを発生させるには、一度マウスボタンをリリースしてから、再度クリックしてマウスを動かす(再度ドラッグする)。
-
MOUSE EVENT DRAG_DETECTED 1 MOUSE EVENT DRAG_DETECTED 2
08.MouseDragged [マウスドラッグした]
- 1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 : -
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.text.Font; import javafx.stage.Stage; public class JavaFX_MouseEvent_MouseDragged extends Application{ public static void main(String... args){ Application.launch(args); } public void start(Stage stage) throws Exception { // Lableを作成 Label label = new Label("Label"); label . setFont(new Font( 18 )); label . setAlignment( Pos . CENTER ); label . setPrefWidth(100); label . setStyle( "-fx-background-color: white" ); BorderPane border = new BorderPane(); border . setCenter( label ); stage . setTitle("MouseEvent MouseDragged"); stage . setWidth( 400 ); stage . setHeight( 200 ); stage . setScene( new Scene( border ) ); stage . show(); // MouseDraggedのEventを設定(2パターン) label . addEventHandler( MouseEvent.MOUSE_DRAGGED , event -> System . out . println( "MOUSE EVENT MOUSE_DRAGGED 1" ) ); label . setOnMouseDragged( event -> System . out . println( "MOUSE EVENT MOUSE_DRAGGED 2" ) ); } }
Labelをクリックして、そのままマウスを動かすと標準出力に下記の通り表示される。マウスボタンをプッシュしている間はイベントが発生し続ける。
-
MOUSE EVENT MOUSE_DRAGGED 1 MOUSE EVENT MOUSE_DRAGGED 2