JavaFX警报对话中的文本方向

时间:2016-08-18 23:53:45

标签: java javafx

我的整个申请是从右到左的波斯语。我需要从右到左显示警报。

如何为此目的更改警报对话的属性?

3 个答案:

答案 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'在波斯语。只是这样做,所以人们抬头直接知道这是否有效,而不是必须尝试。

image with persion '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

此代码的结果(忽略按钮文本) -

enter image description here

如果有效,请告诉我。如果它不让我知道&#39;如何&#39;看起来不对。

答案 2 :(得分:0)

使用:

alert.getDialogPane().getScene().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);

而不是:

alert.getDialogPane().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);

使标题栏方向也是RTL。