From 2f36506099e94b8cf4c0fce1fe77becd8a4bef5e Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 8 Feb 2025 18:02:46 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20#3508:=20Java=20=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=A1=86=E4=B8=AD=E5=88=87=E6=8D=A2=E5=8C=85?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=97=B6=E4=B8=8D=E5=BA=94=E9=87=8D=E7=BD=AE?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=AD=97=E6=AE=B5=20(#3594)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix #3508: Java 下载对话框中切换包类型时不应重置版本字段 * fix checkstyle --- .../hmcl/ui/main/JavaDownloadDialog.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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()) {