Javafx TilePane PrefColumns - PullRequest
       0

Javafx TilePane PrefColumns

1 голос
/ 20 января 2020

У меня проблемы с производством правильного числа столбцов в строке TilePane.

Я пытаюсь получить только десять столбцов в строке. Я знаю, что мне не хватает очевидного. Итак, мне нужна другая пара глаз.

Метод setPrefColumns не работает так, как я его кодировал.

@SuppressWarnings("unused")
public class Main extends Application {
    TilePane tp = new TilePane();

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        try {
            primaryStage.setResizable(false);  
            tp.setPrefColumns(10);
            setTP();    

            Scene scene = new Scene(tp,800,600);

            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public void setTP() {           
        tp.setVisible(true);

        int[] numbers = {1,2,3,4,5,6,7,8,9,10};

        for(int row=0; row<11; row++) {

            for (int i: numbers ) {

                Text t = new Text(String.valueOf(i));

                HBox hbox = new HBox();
                hbox.getChildren().add(t);

                hbox.setStyle("-fx-border-color: red;");
                tp.getChildren().add(hbox);
            }
        }
    }
}

1 Ответ

0 голосов
/ 22 января 2020

Ваш пример TilePane ведет себя так, как указано:

Обратите внимание, что prefColumns / prefRows используется только для вычисления предпочтительного размера и может не отражать фактическое количество строк или столбцов, которые могут измениться как панель плиток. изменяется, и плитки обертываются по фактическим границам.

Как root сцены, она имеет размер, чтобы заполнить всю ширину (800 в вашем контексте):

Scene scene = new Scene(tp,800,600);

Чтобы обернуть его в prefColumns, вам нужно добавить его в макет, который учитывает prefWidth его содержимого, например HBox:

Scene scene = new Scene(new HBox(tp),800,600);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...