Мне нужно визуализировать некоторые данные очень компактно.Из-за ограниченной высоты каждого контейнера данных я решил переместить заголовок каждого контейнера в сторону и повернуть его вертикально.При вращении метки она придерживается размеров своего родителя.Следовательно, максимальная длина метки ограничена шириной родительского элемента.Как я могу сделать так, чтобы метка maxWidth была фактической maxHeight родительской панели?
Для каждого контейнера я использую GridPane.Метка находится внутри StackPane для установки границы или для изменения цвета фона.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class Test extends Application {
public void start(Stage primaryStage) throws Exception {
// Part of the code
GridPane gridPane = new GridPane();
StackPane namePane;
Label nameLabel;
// ...
// Header
gridPane.getColumnConstraints().add(new ColumnConstraints(40.0));
// Index
gridPane.getColumnConstraints().add(new ColumnConstraints(50.0));
// Name
gridPane.getColumnConstraints().add(new ColumnConstraints(100.0,150.0,400));
// int rows = ...; // Any integer between 1 and 6
int rows = 5;
for(int i = 0; i < rows; i++) {
gridPane.getRowConstraints().add(new RowConstraints(30));
}
namePane = new StackPane();
nameLabel = new Label("Name-123456789");
nameLabel.setStyle("-fx-rotate: -90;");
namePane.getChildren().add(nameLabel);
gridPane.add(namePane,0,0,1,rows);
// ...
// Debug only
gridPane.setGridLinesVisible(true);
// just for running the example
Scene scene = new Scene(gridPane,700,700);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Ниже двух изображений, представляющих, как я мог бы ожидать, что метка будет выглядеть и как она выглядит на самом деле.
Я уже пытался изменить maxWidth Lable на Double.MAX_VALUE без успеха.
nameLabel.setMaxWidth(Double.MAX_VALUE);