JavaFX повернул узел для заполнения панели - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь выяснить, как настроить повернутый компонент, чтобы заполнить его родительскую панель, например, центр BorderPane.В этом примере с TableÍView показано объясненное поведение:

public class TableViewSample0 extends Application {

    private final TableView table = new TableView();
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        stage.setTitle("Table View Sample");
        stage.setWidth(300);
        stage.setHeight(500);

        final Label label = new Label("Address Book");
        label.setFont(new Font("Arial", 20));

        table.setEditable(true);
        // table.setRotate(-90); // uncomment to rotate

        TableColumn firstNameCol = new TableColumn("First Name");
        TableColumn lastNameCol = new TableColumn("Last Name");
        TableColumn emailCol = new TableColumn("Email");

        table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);

        BorderPane pane = new BorderPane(table);
        stage.setScene(new Scene(pane));
        stage.show();
    }
}

Раскомментировав вращающуюся линию, можно увидеть, как поведение нарушается: изменение ширины сцены приводит к изменению высоты и высоты столавлияет на ширину стола.Как будто это не было повернуто.

Насколько я понимаю, это вызвано тем, что преобразование не повлияло на layoutBounds и они используются для размещения узла в родительском элементе.

Решение для учебника состоит в том, чтобы поместить таблицу в группу, что, однако, приведет к тому, что компонент не заполнит панель (new BorderPane(new Group(table))).Я также пытался написать пользовательский регион с переопределением layoutChildren, но я не мог заставить его работать, так как координаты x / y всегда путались после поворота.

Я надеялся, что кто-то может указать мне правильное направление.(Мое единственное решение сейчас состоит в том, чтобы использовать группу и привязать ширину / высоту таблицы к размерам панели. Однако, я чувствую, что может быть лучший способ: в основном переопределить layoutBounds и разметить узел с его физическими границами.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...