俺だけの秘密基地 IT系技術局
Java関連技術情報セクション

Event

MOUSE EVENT


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" ) );
    
    	}
    
    }
    
【 MouseClicked サンプルソース 】

【実行結果】

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" ) );
    
    	}
    
    }
    
【 MousePressed サンプルソース 】

【実行結果】

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" ) );
    
    	}
    
    }
    
【 MouseReleased サンプルソース 】

【実行結果】

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" ) );
    
    	}
    
    }
    
【 MouseEntered サンプルソース 】

【実行結果】

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" ) );
    
    	}
    
    }
    
【 MouseExited サンプルソース 】

【実行結果】

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" ) );
    
    	}
    
    }
    
【 MouseMoved サンプルソース 】

【実行結果】

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" ) );
    
    	}
    
    }
    
【 DragDetected サンプルソース 】

【実行結果】

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" ) );
    
    	}
    
    }
    
【 MouseDragged サンプルソース 】

【実行結果】

Labelをクリックして、そのままマウスを動かすと標準出力に下記の通り表示される。マウスボタンをプッシュしている間はイベントが発生し続ける。

  • MOUSE EVENT MOUSE_DRAGGED 1
    MOUSE EVENT MOUSE_DRAGGED 2
    



Back JavaFX Menu