📜  JavaFX |带有示例的光标类

📅  最后修改于: 2022-05-13 01:54:35.823000             🧑  作者: Mango

JavaFX |带有示例的光标类

游标类是 JavaFX 的一部分。 Cursor 类用于封装鼠标光标的位图表示。游标类有几个预定义的游标,可以根据程序员的需要使用。

常用方法:

MethodExplanation
cursor(String s)returns cursor object of the specified string
toString()Returns a string representation for the cursor.

下面的程序将说明游标类的使用:

  1. Java程序通过传递字符串标识符作为参数来设置一些预定义的游标:这个程序创建了一个名为cursor_的游标。光标将使用函数setCursor()设置到场景中。我们将创建一个标签。标签将在场景内创建,而场景又将托管在舞台内。函数setTitle()用于为舞台提供标题。然后创建一个平铺窗格,调用addChildren()方法将标签附加到场景中。最后调用show()方法显示最终结果。
    // Java program to set some predefined cursor
    // to the by passing string identifier as arguments
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    import javafx.scene.Cursor;
      
    public class cursor_0 extends Application {
      
        // launch the application
        public void start(Stage stage)
        {
              
            // set title for the stage
            stage.setTitle("Creating Cursor");
      
            // create a stack pane
            TilePane tilepane = new TilePane();
      
            // create a label
            Label label = new Label("Cursor Example");
      
            // add button
            tilepane.getChildren().add(label);
      
            // create a scene
            Scene scene = new Scene(tilepane, 200, 200);
      
            // create a cursor
            Cursor cursor_ = Cursor.cursor("WAIT");
      
            // set cursor for the scene
            scene.setCursor(cursor_);
      
            // set the scene
            stage.setScene(scene);
      
            stage.show();
        }
      
        // Main Method
        public static void main(String args[])
        {
              
            // launch the application
            launch(args);
        }
    }
    

    输出:

  2. Java程序将一些预定义的光标设置到场景中:该程序分别创建一个由名称按钮指示的 Button。我们将创建一个名为cursor_的预定义游标数组。将使用预定义光标cursor_列表中的函数setCursor()将光标设置为场景。该按钮将在场景内创建,而场景又将托管在舞台内。我们将创建一个标签。函数setTitle()用于为舞台提供标题。然后创建一个平铺窗格,调用addChildren()方法将按钮和标签附加到场景中。最后,调用show()方法来显示最终结果。我们将创建一个事件处理程序来处理按钮事件。事件处理程序将使用setOnAction()函数添加到按钮。当按下按钮时,场景的光标将使用函数setCursor()改变。
    // Java program to set some predefined
    // cursor to the scene
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    import javafx.scene.Cursor;
      
    public class cursor_1 extends Application {
      
    // counter of cursor
    int i = 0;
      
    // launch the application
    public void start(Stage stage)
    {
        // set title for the stage
        stage.setTitle("Creating Cursor");
      
        // create a button
        Button button = new Button("cursor");
      
        // create a stack pane
        TilePane tilepane = new TilePane();
      
        // create a label
        Label label = new Label("Cursor Example");
      
        // create a cursor with predefined cursor
        Cursor cursor_[] = {Cursor.CLOSED_HAND, Cursor.CROSSHAIR,
                            Cursor.DEFAULT, Cursor.DISAPPEAR, 
                            Cursor.E_RESIZE, Cursor.H_RESIZE, 
                            Cursor.HAND, Cursor.MOVE, 
                            Cursor.N_RESIZE, Cursor.NE_RESIZE, 
                            Cursor.NONE, Cursor.NW_RESIZE, 
                            Cursor.OPEN_HAND, Cursor.SE_RESIZE, 
                            Cursor.SW_RESIZE, Cursor.TEXT, 
                            Cursor.V_RESIZE, Cursor.W_RESIZE,
                            Cursor.WAIT};
      
        // add button
        tilepane.getChildren().add(button);
        tilepane.getChildren().add(label);
      
        // create a scene
        Scene scene = new Scene(tilepane, 200, 200);
      
        // set cursor for the scene
        scene.setCursor(cursor_[0]);
      
        // action event
        EventHandler event = 
          new EventHandler() 
        {
            public void handle(ActionEvent e)
            {
                if (i == cursor_.length - 1)
                    i = -1;
      
                // change the cursor
                scene.setCursor(cursor_[++i]);
            }
        };
      
        // when button is pressed
        button.setOnAction(event);
      
        // set the scene
        stage.setScene(scene);
      
        stage.show();
    }
      
    // Main Method
    public static void main(String args[])
    {
          
        // launch the application
        launch(args);
    }
    }
    

    输出:

注意:上述程序可能无法在在线 IDE 中运行。请使用离线编译器。

参考: https://docs.oracle.com/javafx/2/api/javafx/scene/Cursor.html