JavaFX. Как сделать StackPane статичного размера?

392
17 февраля 2017, 02:05

Есть StackPane с панелями (аля наполненный BorderPane).

В один прекрасный момент при добавлении нового дочернего элемента, который оказывается больше остальных, StackPane растягивается под его размер и заодно растягивает остальные элементы за собой. Как сделать так, чтобы "большой" элемент размещался так как есть, но остальные оставались неизменными? (имо, это происходит из за того, что меняется размер родительского элемента. как сделать дочерние эл-ты "автономными"?)

Пример:

public class StackPaneSet extends StackPane {
    private final Map<Integer, Pane> stack;
    private final int baseLayoutZIndex = 100;
    public StackPaneSet() {
        stack = new TreeMap<>();
    }
    private void updateLayout() {
        getChildren().clear();
        getChildren().addAll(stack.values());
    }
    public StackBorderPane setTop(Node node) {
        BorderPane base = getDefaultPane();
        base.setTop(node);
        return this;
    }
    public StackBorderPane setCenter(Node node) {
        BorderPane base = getDefaultPane();
        base.setCenter(node);
        return this;
    }
    public int getDefaultZIndex() {
        return baseLayoutZIndex;
    }
    public BorderPane getDefaultPane() {
        BorderPane bp = getPane(getDefaultZIndex());
        if (bp == null) {
            setPane(bp = new BorderPane(), getDefaultZIndex());
        }
        return bp;
    }
    @SuppressWarnings("unchecked")
    public <T extends Pane> T getPane(int index) {
        Pane p = stack.get(index);
        if (p != null) return (T) p;
        return null;
    }
    public <T extends Pane> StackBorderPane setPane(T pane, int index) {
        stack.put(index, pane);
        updateLayout();
        return this;
    }
}
READ ALSO
InetAddress: метод getByAddress() принимает не все ip?

InetAddress: метод getByAddress() принимает не все ip?

В классе InetAddress есть метод getByAddress,который принимает на вход массив байтов, содержащий IPv4 или IPv6Но в Java максимально значение byte - 128, то есть...

361
JTextField как вводить только числа?

JTextField как вводить только числа?

Как сделать так, чтобы в JTextField можно было вводить только цифры?

692
Разработать java ee приложение. С чего начать

Разработать java ee приложение. С чего начать

Меня поджимает время, поэтому хочу знать все и сразу (прошу простить и понять)

487
android слайдер картинок [требует правки]

android слайдер картинок [требует правки]

как сделать слайдер и просмотр картинок как в приложении AliExpress на странице товара? есть толковые уроки?

348