diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentList.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentList.java index 395d3c455..0306acc10 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentList.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentList.java @@ -28,11 +28,11 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.css.PseudoClass; import javafx.geometry.Insets; +import javafx.geometry.Orientation; import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.control.Control; import javafx.scene.control.Label; -import javafx.scene.control.SkinBase; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; @@ -115,12 +115,17 @@ public class ComponentList extends Control { expanded = true; } + @Override + public Orientation getContentBias() { + return Orientation.HORIZONTAL; + } + @Override protected javafx.scene.control.Skin createDefaultSkin() { return new Skin(this); } - protected static class Skin extends SkinBase { + protected static class Skin extends ControlSkinBase { private static final PseudoClass PSEUDO_CLASS_FIRST = PseudoClass.getPseudoClass("first"); private static final PseudoClass PSEUDO_CLASS_LAST = PseudoClass.getPseudoClass("last"); @@ -166,7 +171,7 @@ public class ComponentList extends Control { VBox vbox = new VBox(); vbox.setFillWidth(true); Bindings.bindContent(vbox.getChildren(), list); - getChildren().setAll(vbox); + node = vbox; } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ControlSkinBase.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ControlSkinBase.java new file mode 100644 index 000000000..60052350d --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ControlSkinBase.java @@ -0,0 +1,55 @@ +/* + * Hello Minecraft! Launcher + * Copyright (C) 2022 huangyuhui and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jackhuang.hmcl.ui.construct; + +import javafx.scene.Node; +import javafx.scene.control.Control; +import javafx.scene.control.Skin; + +import java.util.Objects; + +public abstract class ControlSkinBase implements Skin { + private final C control; + + protected Node node; + + /** + * Constructor for all SkinBase instances. + * + * @param control The control for which this Skin should attach to. + */ + protected ControlSkinBase(C control) { + this.control = control; + } + + @Override + public C getSkinnable() { + return control; + } + + @Override + public Node getNode() { + Objects.requireNonNull(node); + return node; + } + + @Override + public void dispose() { + + } +}