Мое приложение справа налево для персидского языка. Мне нужно показать предупреждения справа налево.Направление текста в диалоговом окне предупреждения JavaFX
Как я могу изменить свойства диалогового окна оповещения для этой цели?
Мое приложение справа налево для персидского языка. Мне нужно показать предупреждения справа налево.Направление текста в диалоговом окне предупреждения JavaFX
Как я могу изменить свойства диалогового окна оповещения для этой цели?
Вы должны быть в состоянии изменить nodeOrientation
на dialogPane
в Dialog
:
Alert alert = ...
alert.getDialogPane().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
Как Фабиан предложил below, вы можете сделать это просто с
alert.getDialogPane().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
Но если кто-то пришел в поисках какой-то ручной способ сделать это (хотя я не понимаю, почему кто-то хотел бы это сделать), то, пожалуйста, найдите подробности ниже:
Я не знаю, как работают языки справа налево. Но вы можете TextFlow предоставить возможность выравнивания текста справа налево. Так что это может сработать, но я не уверен!
Кроме того, следующий фрагмент кода не отредактировал текст в самом окне оповещения. Но он просто добавляет дополнительные TextFlow
в диалог.
Вот как выглядит диалоговое окно, после того, как я добавил перевод слова «Hello World» на персидском языке. Просто делали это, поэтому люди, которые смотрели вверх, знали бы, работает ли это или нет, вместо того, чтобы попробовать.
Текст заголовка, похоже, чтобы получить в пути. Таким образом, вы можете удалить его с помощью using-
alert.setHeaderText(null);
EDIT:
Поскольку кнопки по-прежнему на английском языке (или влево-вправо), вот что вы можете использовать, учитывая, что вы сделали все приложение Вправо-влево следуйте той же процедуре, что и кнопки Button справа. Я бы не стал вкладывать в это время, поскольку это то, что у вас уже есть.
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();
Вы можете выполнить задачу, если кнопка OK нажата путем обработки result
- Проверьте, result.isPresent()
верно и проверьте result.get() == okBtn
Результат этого кода (игнорировать тексты кнопки) -
Если это работает, то, пожалуйста, дайте мне знать. И если это не дает мне знать, как это выглядит неправильно.
Использование:
alert.getDialogPane().getScene().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
вместо:
alert.getDialogPane().setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
сделать строку заголовка направление RTL.