我知道我可以使用Scene.setCursor
方法为整个场景设置光标类型。但是如果我将场景换成另一个场景,光标总是会重置为默认值 - 忽略在新场景上设置的光标。这是测试案例,在XFCE和XMonad中进行了测试:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Cursor;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HideCursor extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
StackPane root = new StackPane();
root.setStyle("-fx-background-color: green");
Scene scene = new Scene(root, 600, 600);
scene.setCursor(Cursor.MOVE);
StackPane root2 = new StackPane();
root2.setStyle("-fx-background-color: blue");
Scene scene2 = new Scene(root2, 600, 600);
scene2.setCursor(Cursor.MOVE);
primaryStage.setScene(scene);
Button switchScene = new Button("switch");
root.getChildren().add(switchScene);
switchScene.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
primaryStage.setScene(scene2);
}
});
primaryStage.show();
}
}
有趣的是,在Windows 7中它按预期工作。我做错了什么?