diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaDownloadDialog.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaDownloadDialog.java index f5d27ea2e..6bc0a6259 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaDownloadDialog.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaDownloadDialog.java @@ -216,6 +216,7 @@ public final class JavaDownloadDialog extends StackPane { distributionBox.setItems(FXCollections.observableList(new ArrayList<>(distributions))); FXUtils.onChange(packageTypeBox.getSelectionModel().selectedItemProperty(), packageType -> { + ObservableList versions; if (packageType == null || currentJavaVersionList.get() == null @@ -224,8 +225,26 @@ public final class JavaDownloadDialog extends StackPane { return; } + DiscoJavaRemoteVersion oldVersion = remoteVersionBox.getSelectionModel().getSelectedItem(); remoteVersionBox.setItems(versions); + if (oldVersion != null) { + for (int i = 0; i < versions.size(); i++) { + DiscoJavaRemoteVersion version = versions.get(i); + if (Objects.equals(version.getDistributionVersion(), oldVersion.getDistributionVersion())) { + remoteVersionBox.getSelectionModel().select(i); + return; + } + } + for (int i = 0; i < versions.size(); i++) { + DiscoJavaRemoteVersion version = versions.get(i); + if (version.getJdkVersion() == oldVersion.getJdkVersion()) { + remoteVersionBox.getSelectionModel().select(i); + return; + } + } + } + for (int i = 0; i < versions.size(); i++) { DiscoJavaRemoteVersion version = versions.get(i); if (version.getJdkVersion() == GameJavaVersion.LATEST.getMajorVersion()) {