JavaFX标题栏RTL不受支持?

时间:2014-10-19 20:39:50

标签: java-8 javafx-8

我似乎找不到让我的窗口标题栏成为RTL的方法。 我可以通过更改节点方向属性而不是标题栏来使内部节点RTL。 所以我得到一个非常奇怪的应用程序,其中一切都是RTL,除了标题栏。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

在显示舞台setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT)之前,您需要在场景中调用primaryStage.show()

enter image description here

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        Scene scene = new Scene(root, 300, 275);
        primaryStage.setScene(scene);
        scene.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

  

由于每个孩子的孩子的方向可能不同,显式设置时子节点的方向可以覆盖父。例如,顶级窗口可能是从右到左,左侧出现标题和关闭框

答案 1 :(得分:0)

就像@ Eng.Fouad对于场景对象所说的那样,可以在菜单栏中完成。 调用

setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT)

用于菜单栏对象使其成为rtl:

MenuBar menuBar = new MenuBar();
menuBar.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);

此方法的arg可以为

NodeOrientation.LEFT_TORIGHT

使其从左到右,

NodeOrientation.INHERIT

从父容器获取其值。