gpt4 book ai didi

java - 如何创建具有正确宽度和高度的垂直标签?

转载 作者:行者123 更新时间:2023-11-30 01:52:36 25 4
gpt4 key购买 nike

我需要非常紧凑地可视化一些数据。由于每个数据容器的高度有限,我决定将每个容器的标题移至一侧并垂直旋转。旋转标签时,它会遵循其父级的尺寸。因此,标签的最大长度受到父标签宽度的限制。如何才能使标签的 maxWidth 等于父 Pane 的实际 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);
}
}

下面两张图片代表了我期望标签的外观以及它实际的外观。

How it should look How it looks so far

我已经尝试将标签的 maxWidth 更改为 Double.MAX_VALUE,但没有成功。

nameLabel.setMaxWidth(Double.MAX_VALUE);

最佳答案

StackPaneLabel 视为位置未通过转换修改。这也会影响 StackPane 的计算大小。

要解决此问题,您可以将 Label 包装在 Parent 中,该父级在计算其大小时会考虑转换:Group

namePane.getChildren().add(new Group(nameLabel));

注意:如果namePane 的高度变得太小而无法容纳Label,则这不会调整它的大小。为了达到这种效果,您需要实现自己的布局。

关于java - 如何创建具有正确宽度和高度的垂直标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55561809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com