我似乎找不到让我的窗口标题栏成为RTL的方法。 我可以通过更改节点方向属性而不是标题栏来使内部节点RTL。 所以我得到一个非常奇怪的应用程序,其中一切都是RTL,除了标题栏。
我该如何解决这个问题?
答案 0 :(得分:1)
在显示舞台setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT)
之前,您需要在场景中调用primaryStage.show()
:
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
从父容器获取其值。