个性化阅读
专注于IT技术分析

JavaFX便捷方法

本文概述

JavaFX提供了可用于处理JavaFX应用程序中事件的便捷方法。它们提供了一种简单的方法来创建和注册事件处理程序, 以响应KeyEvent, MouseEvent, Action事件, 拖放事件等。

Node类包含各种事件处理程序属性, 可以使用该类中定义的setter方法将其设置为用户定义的事件处理程序。

将Node类的EventHandler属性设置为用户定义的事件处理程序, 将自动注册这些处理程序以接收相应的事件类型。

下表描述了EventHandler属性及其设置方法(便捷方法)。

EventHandler属性 描述 设置方法
onContextMenuRequested 这是ContextMenuEvent的EventHandler类型。这被分配给在节点上请求上下文菜单时要调用的功能。 setOnContextMenuRequested(EventHandler value )
onDragDetected 这是MouseEvent的EventHandler类型。这表示检测到拖动手势时要调用的功能。 setOnDragDetected(EventHandler value )
onDragDone 这是DragEvent的EventHandler类型。 setOnDragDone(EventHandler value )
onDragDropped 这是DragEvent的EventHandler类型。这被分配给在拖放操作期间释放鼠标时要调用的功能。 setOnDragDropped(EventHandler value )
onDragEntered 这是DragEvent的EventHandler类型。这被分配给在拖动手势进入节点时要调用的功能。 setOnDragEntered(EventHandler value )
onDragExited 这是DragEvent的EventHandler类型。这被分配给在拖动手势离开节点时要调用的功能。 setOnDragExited(EventHandler value )
onDragOver 这是DragEvent的EventHandler类型。分配给一个函数, 当拖动手势在节点中进行时将调用该函数。 setOnDragOver(EventHandler value )
onInputMethodTextChanged 这是InputMethodEvent的EventHandler类型。这被分配给一个功能, 当节点具有焦点且输入法文本已更改时, 该功能将被调用。 setOnInputMethodTextChanged(EventHandler value )
onKeyPressed 这是KeyEvent的EventHandler类型。这被分配给一个功能, 当节点具有焦点并按下键时将调用该功能。 setOnKeyPressed(EventHandler value )
onKeyReleased 这是KeyEvent的EventHandler类型。这被分配给一个功能, 当节点具有焦点并释放键时将调用该功能。 setOnKeyReleased(EventHandler value )
onKeyTyped 这是KeyEvent的EventHandler类型。分配给一个函数, 当节点具有焦点并键入键时将调用该函数。 setOnKeyTyped(EventHandler value )
onMouseClicked 这是MouseEvent的EventHandler类型。这被分配给在节点上单击鼠标按钮时要调用的功能。 setOnMouseClicked(EventHandler value )
onMouseDragEntered 这是MouseDragEvent的EventHandler类型。这被分配给一个功能, 当全按拖动释放手势进入该节点时将调用该功能。 setOnMouseDragEntered(EventHandler value )
onMouseDragExited 这是MouseDragEvent的EventHandler类型。分配给一个函数, 当完全按下拖动释放手势退出该节点时将调用该函数。 setOnMouseDragExited(EventHandler value )
onMouseDragged 这是MouseDragEvent的EventHandler类型。这被分配给在节点上按下并拖动鼠标按钮时要调用的功能。 setOnMouseDragged(EventHandler value )
onMouseDragOver 这是MouseDragEvent的EventHandler类型。这被分配给一个功能, 该功能在节点内进行全按拖动释放手势时将被调用。 setOnMouseDragOver(EventHandler value )
onMouseDragReleased 这是MouseDragEvent的EventHandler类型。这被分配给一个功能, 当全按拖动释放手势在节点内结束时将调用该功能。 setOnMouseDragReleased(EventHandler value )
onMouseEntered 这是MouseEvent的EventHandler类型。这被分配给当鼠标进入节点时要调用的功能。 setOnMouseEntered(EventHandler value )
onMouseExited 这是MouseEvent的EventHandler类型。这被分配给一个函数, 当鼠标退出节点时该函数将被调用。 setOnMouseExited(EventHandler value )
onMouseMoved 这是MouseEvent的EventHandler类型。当鼠标在节点内移动且未按下任何按钮时, 此功能将分配给该功能。 setOnMouseMoved(EventHandler value )
onMousePressed 这是MouseEvent的EventHandler类型。这被分配给在节点上按下鼠标按钮时要调用的功能。 setOnMousePressed(EventHandler value )
onMouseReleased 这是MouseEvent的EventHandler类型。这被分配给在节点上释放鼠标按钮时要调用的功能。 setOnMouseReleased(EventHandler value )
onRotate 这是RotateEvent的EventHandler类型。这被分配给在节点上执行旋转动作时要调用的功能。 setOnRotate(EventHandler value )
onRotationFinished 这是RotateEvent的EventHandler类型。这分配给旋转手势结束时要调用的功能。 setOnRotationFinished(EventHandler value )
onRotationStarted 这是RotateEvent的EventHandler类型。这被分配给在首次检测到旋转手势时要调用的功能。 setOnRotationStarted(EventHandler value )
onScrollFinished 这是ScrollEvent的EventHandler类型。这分配给滚动手势结束时要调用的功能。 setOnScrollFinished(EventHandler value )
onScroll 这是ScrollEvent的EventHandler类型。这被分配给执行滚动动作时要调用的功能。 setOnScroll(EventHandler value )
onScrollStarted 这是ScrollEvent的EventHandler类型。这被分配给在检测到滚动手势时要调用的功能。 setOnScrollStarted(EventHandler value )
onSwipeDown 这是SwipeEvent的EventHandler类型。这被分配给在节点上发生向下滑动时要调用的功能。 setOnSwipeDown(EventHandler value )
onSwipeUP 这是SwipeEvent的EventHandler类型。这被分配给在节点上发生向上滑动时要调用的函数。 setOnSwipeUP(EventHandler value )
onSwipeLeft 这是SwipeEvent的EventHandler类型。这被分配给在节点上向左滑动时要调用的功能。 setOnSwipeLeft(EventHandler value )
onSwipeRight 这是SwipeEvent的EventHandler类型。这被分配给在节点上向右滑动时要调用的功能。 setOnSwipeRight(EventHandler value )
onTouchMoved 这是TouchEvent的EventHandler类型。这被分配给在节点上移动触摸点时要调用的功能。 setOnTouchMoved(EventHandler value )
onTouchReleased 这是TouchEvent的EventHandler类型。这被分配给在节点上释放触摸点时要调用的功能。 setOnTouchReleased(EventHandler value )
onTouchStationary 这是TouchEvent的EventHandler类型。这被分配给一个功能, 该功能在按下触摸点并保持静止时调用 setOnTouchStationary(EventHandler value )
onZoomFinished 这是ZoomEvent的EventHandler类型。这被分配给在缩放手势结束时要调用的功能。 setOnZoomFinished(EventHandler value )
onZoom 这是ZoomEvent的EventHandler类型。这被分配给执行缩放手势时要调用的功能。 setOnZoom(EventHandler value )
onZoomStarted 这是ZoomEvent的EventHandler类型。这被分配给在检测到缩放手势时要调用的功能。 setOnZoomStarted(EventHandler value )

用于注册事件处理程序的便捷方法的格式如下

setOnEvent-type(EventHandler<? super event-class> value)

其中, 事件类型是将通过定义的函数处理的事件的类型, 例如, setOnMouseMoved()将是为Mouse_Moved事件注册事件处理程序的便捷方法。

setOnAction()按钮操作的示例

在下面的示例中, 说明了setOnAction()方法。单击“播放”按钮并将其设置为旋转屏幕上的矩形时, 将调用通过setOnAction()方法注册的EventHandler。

暂停按钮也已注册到EventHandler中, 该事件处理程序设置为停止矩形的旋转。

package application;
import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class EventHandlerExample extends Application {
  public static void main(String[] args) {
    Application.launch(args);
  }

  @Override
  public void start(Stage primaryStage) {
	
	// Creating Rectangle 
    Rectangle rect = new Rectangle(100, 100, 120, 120);
    
    // Setting Stroke and colour for the rectangle 
    rect.setFill(Color.RED);
    rect.setStroke(Color.BLACK);
    
    // Instantiating RotateTransition class 
    RotateTransition rotate = new RotateTransition();
	
    //Setting properties for the Rotate Transition class 
    rotate.setAutoReverse(false);
	rotate.setByAngle(360);
	rotate.setCycleCount(500);
	rotate.setDuration(Duration.millis(500));
	rotate.setNode(rect);
	
	//Creating the play button 
    Button btn = new Button();
    
    //Setting properties for the play button 
    btn.setText("Play");
    btn.setTranslateX(100);
    btn.setTranslateY(250);
    
    //defining the convenience method to register the event handler to handle the Action event.    
    btn.setOnAction(new EventHandler<ActionEvent>() {
      public void handle(ActionEvent event) {
    	  
    	  rotate.play();
      }
    });
    
    //Creating the pause button 
    Button btn1 = new Button("Pause");
    
    //Setting propertied for the pause button 
    btn1.setTranslateX(160);
    btn1.setTranslateY(250);
    
    //Handling event for the pause button click event 
    btn1.setOnAction(new EventHandler<ActionEvent>() {

		@Override
		public void handle(ActionEvent arg0) {
			// TODO Auto-generated method stub
			rotate.pause();
		}
    	
	});
    
    //Configuring group and scene 
    Group root = new Group();
    Scene scene = new Scene(root, 400, 350);
    root.getChildren().addAll(btn, rect, btn1);
    primaryStage.setScene(scene);
    primaryStage.setTitle("Handling Events");
    primaryStage.show();
  }
}

setOnKeyEvent()按键事件的示例

setOnKeyEvent()方法可用于为节点上生成的键事件注册事件处理程序逻辑。在以下示例中, 将创建两个文本字段作为节点, 将在第一个文本字段中按下的键设置为在第二个文本字段中的文本。

package application;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaFX_KeyEvent extends Application{

	@Override
	public void start(Stage primaryStage) throws Exception {
		
		// TODO Auto-generated method stub
		
		//Creating TextFields and setting position for them 
		TextField tf1 = new TextField();
		TextField tf2 = new TextField();
		tf1.setTranslateX(100);
		tf1.setTranslateY(100);
		tf2.setTranslateX(300);
		tf2.setTranslateY(100);
		
		//Handling KeyEvent for textfield 1 
		tf1.setOnKeyPressed(new EventHandler<KeyEvent>() {

			@Override
			public void handle(KeyEvent key) {
				// TODO Auto-generated method stub
				tf2.setText("Key Pressed :"+" "+key.getText());
			}
			
		});
		
		//setting group and scene 
		Group root = new Group();
		root.getChildren().addAll(tf2, tf1);
		Scene scene = new Scene(root, 500, 200, Color.WHEAT);
		primaryStage.setScene(scene);
		primaryStage.setTitle("Handling KeyEvent");
		primaryStage.show();
	}
	public static void main(String[] args) {
		launch(args);
	}

}
JavaFX便捷方法
赞(0)
未经允许不得转载:srcmini » JavaFX便捷方法

相关推荐

评论 抢沙发

评论前必须登录!