我的整个申请是从右到左的波斯语。我需要从右到左显示警报。
如何为此目的更改警报对话的属性?
答案 0 :(得分:5)
您应该可以更改nodeOrientation
的{{1}}上的dialogPane
:
Dialog
答案 1 :(得分:0)
正如法比安建议below,你可以用
做到这一点 alert.getDialogPane().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
但如果有人进来寻找一些手动方式(虽然我不明白为什么有人会这样做),那么请在下面找到详细信息 -
我不知道从右到左的语言如何运作。但是,TextFlow可以提供从右到左对齐文本的选项。所以这可能会奏效,但我不确定!
此外,以下代码段不会编辑警告框中的文本。但它只是在对话框中添加了额外的TextFlow
。
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Some title");
Text text = new Text("some right-to-left text here");
TextFlow textFlow = new TextFlow();
textFlow.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
textFlow.getChildren().addAll(text);
alert.getDialogPane().setContent(textFlow);
alert.show();
这是对话框的外观,在我添加了一些谷歌翻译的“Hello World'在波斯语。只是这样做,所以人们抬头直接知道这是否有效,而不是必须尝试。
标题文字似乎确实妨碍了。所以你可以使用 -
删除它alert.setHeaderText(null);
编辑:
由于按钮仍为英文(或左右),因此您可以使用以下内容,考虑到您已完成整个应用程序的右 - 左,按照相同的步骤使按钮文本左右。我不会把时间花在上面,因为这是你已经拥有的东西。
ButtonType okBtn; //make sure this is of type ButtonBar.ButtonData.OK_DONE
ButtonType cancelBtn; //make sure this is of type ButtonBar.ButtonData.CANCEL_CLOSE
Alert alert = new Alert(AlertType.CONFIRMATION,"",okBtn,cancelBtn);
alert.getDialogPane().setContent(textFlow);
alert.setTitle("Some title");
alert.setHeaderText(null);
Optional<ButtonType> result = alert.showAndWait();
如果通过处理result
点击确定按钮,您可以执行任务 -
检查result.isPresent()
是否为真,并检查是否result.get() == okBtn
此代码的结果(忽略按钮文本) -
如果有效,请告诉我。如果它不让我知道&#39;如何&#39;看起来不对。
答案 2 :(得分:0)
使用:
alert.getDialogPane().getScene().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
而不是:
alert.getDialogPane().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
使标题栏方向也是RTL。