Я пытаюсь сделать всплывающее окно с предупреждением в javaFX. Однако я вижу кнопку «ОК» на английском языке, но кнопка «ОТМЕНА» была представлена на корейском языке, например, это. Подскажите, пожалуйста, как сделать кнопку отмены на английском. Это часть моего кода:
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Message");
alert.setHeaderText("Are you sure you want to clear all nodes?");
Optional<ButtonType> result = alert.showAndWait();
if (result.get().equals(ButtonType.OK)) {
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
bst.clear();
height = 20;
width = 740;
ratiowidth = 740;
}else if (result.get().equals(ButtonType.NO)) {
alert.close();
}




Добро пожаловать в StackOverflow! :)
Можете ли вы проверить, какая у вас локаль по умолчанию? Поскольку у меня по умолчанию "en-EN" и "из коробки", я получаю значения кнопок "ОК" и "Отмена". Но если бы я добавил эту строку в начало приложения, то у меня были бы похожие символы, чем у вас, см. Приложенный скриншот.
Locale.setDefault(new Locale("ja", "Japan"));
Пожалуйста, запустите следующий код, чтобы иметь кнопки с английским текстом внутри.
Мой код приложения POC:
Main.java
package sample;
import javafx.application.Application;
import javafx.scene.control.Alert;
import javafx.stage.Stage;
import java.util.Locale;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
//Locale.setDefault(new Locale("ja", "Japan"));
Locale.setDefault(new Locale("en", "English"));
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Message");
alert.setHeaderText("Are you sure you want to clear all nodes?");
}
public static void main(String[] args) {
launch(args);
}
}
пом.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>al.musi.jacek</groupId>
<artifactId>javafx-alert-dialog</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>15.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.5</version>
<configuration>
<mainClass>C:\Users\re\Documents\GitHub\javafx-alert-dialog\src\main\java\sample\Main.java</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
Другой ответ излишне длинный. Вам просто нужно
Locale.setDefault(Locale.ENGLISH);
в любом месте перед созданием диалогового окна, желательно в верхней части метода main или start.