Skip to content

Commit 74cdc70

Browse files
committed
修复使用 JavaFX 25 时游戏下载界面布局错误的问题 (#4508)
1 parent 0d9a275 commit 74cdc70

2 files changed

Lines changed: 15 additions & 16 deletions

File tree

HMCL/src/main/java/org/jackhuang/hmcl/ui/InstallerItem.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import javafx.beans.binding.Bindings;
2323
import javafx.beans.property.ObjectProperty;
2424
import javafx.beans.property.SimpleObjectProperty;
25+
import javafx.beans.value.ChangeListener;
2526
import javafx.css.PseudoClass;
2627
import javafx.geometry.Insets;
2728
import javafx.geometry.Pos;
@@ -312,17 +313,20 @@ public InstallerItem[] getLibraries() {
312313
private static final class InstallerItemSkin extends SkinBase<InstallerItem> {
313314
private static final PseudoClass LIST_ITEM = PseudoClass.getPseudoClass("list-item");
314315
private static final PseudoClass CARD = PseudoClass.getPseudoClass("card");
315-
private static final WeakListenerHolder holder = new WeakListenerHolder();
316+
317+
@SuppressWarnings({"FieldCanBeLocal", "unused"})
318+
private final ChangeListener<Number> holder;
316319

317320
InstallerItemSkin(InstallerItem control) {
318321
super(control);
319322

320323
Pane pane;
321324
if (control.style == Style.CARD) {
322325
pane = new VBox();
323-
holder.add(FXUtils.onWeakChange(pane.widthProperty(), v -> FXUtils.setLimitHeight(pane, v.doubleValue() * 0.7)));
326+
holder = FXUtils.onWeakChangeAndOperate(pane.widthProperty(), v -> FXUtils.setLimitHeight(pane, v.doubleValue() * 0.7));
324327
} else {
325328
pane = new HBox();
329+
holder = null;
326330
}
327331
pane.getStyleClass().add("installer-item");
328332
RipplerContainer container = new RipplerContainer(pane);

HMCL/src/main/java/org/jackhuang/hmcl/ui/download/AbstractInstallersPage.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -120,20 +120,15 @@ protected InstallersPageSkin(AbstractInstallersPage control) {
120120
{
121121
InstallerItem[] libraries = control.group.getLibraries();
122122

123-
FlowPane libraryPane = new FlowPane(libraries);
124-
libraryPane.setVgap(16);
125-
libraryPane.setHgap(16);
126-
127-
if (libraries.length <= 8) {
128-
BorderPane.setMargin(libraryPane, new Insets(16, 0, 16, 0));
129-
root.setCenter(libraryPane);
130-
} else {
131-
ScrollPane scrollPane = new ScrollPane(libraryPane);
132-
scrollPane.setFitToWidth(true);
133-
scrollPane.setFitToHeight(true);
134-
BorderPane.setMargin(scrollPane, new Insets(16, 0, 16, 0));
135-
root.setCenter(scrollPane);
136-
}
123+
FlowPane libraryPane = new FlowPane(16, 16, libraries);
124+
ScrollPane scrollPane = new ScrollPane(libraryPane);
125+
scrollPane.setFitToWidth(true);
126+
scrollPane.setFitToHeight(true);
127+
BorderPane.setMargin(scrollPane, new Insets(16, 0, 16, 0));
128+
root.setCenter(scrollPane);
129+
130+
if (libraries.length <= 8)
131+
scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
137132
}
138133

139134
{

0 commit comments

Comments
 (0)