文本样式
wrapText 属性或-fx-wrap-text CSS 属性控制控件中的文本是否应自动换行以适应可用空间。
您可以设置 Labeled 的背景(或边框)样式以获得矩形背景。 Label 是Labeled 最常用的形式。
或者,您可以通过在 StackPane 中放置 Rectangle 和 Label(或 Text)来设置背景矩形。
您可以使用标准布局容器或大小调整提示(例如prefHeight 和prefWidth)来设置Labeled 的整体大小。
您可以configure the Labeled via CSS 或代码。
如果需要,可以通过 Labeled 的文本字符串中的
手动添加段落分隔符。
文本可以使用textAlignment 相对于Labeled 中的可用空间对齐。
多行文字
多行文本示例:
该示例使用 wrapText 属性允许在行不适合标签宽度时自动换行。该示例还显示换行的段落(使用
)。
盒装文字
此代码更新示例以使用 CSS 向文本添加 multi-layered bordered background。
- 调整结果窗口的大小以查看对多行文本的影响。
- 尝试将
wrapText 设置为 true 和 false 以查看两种设置之间的行为差异。
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.io.IOException;
public class TextApp extends Application {
@Override
public void start(Stage stage) throws IOException {
Label label = new Label(TEXT);
label.setWrapText(true);
label.getStyleClass().add("boxed-text");
StackPane layout = new StackPane(label);
layout.setPadding(new Insets(20));
Scene scene = new Scene(layout);
scene.getStylesheets().add(CSS);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
private static final String CSS_DATA_TYPE = "data:text/css,";
private static final String CSS = CSS_DATA_TYPE + // language=CSS
"""
.root {
-fx-background-color: azure;
}
.boxed-text {
-fx-background-color: khaki, cornsilk;
-fx-background-insets: 0, 5;
-fx-padding: 10;
-fx-background-radius: 8 8 8 8, 6 6 6 6;
-fx-font-size: 14px;
}
""";
private static final String TEXT = """
What a piece of work is a man! how noble in reason!
how infinite in faculty! in form and moving how
express and admirable! in action how like an angel!
in apprehension how like a god! the beauty of the
world! the paragon of animals! And yet, to me,
what is this quintessence of dust?
""";
}
您还在问题中注意到:
我希望根据文本的大小将此文本的字体调整为矩形
我在这里不这样做。在这个问题中已经有足够的处理文本的换行和装箱而不添加动态调整大小。