当前位置:  开发笔记 > 编程语言 > 正文

从JavaFX Label中删除填充/边距

如何解决《从JavaFXLabel中删除填充/边距》经验,为你挑选了2个好方法。

有没有办法删除JavaFX标签添加的默认空间(填充/边距)?我想摆脱下图中黑线之间显示的空间:

在此输入图像描述

源代码:

public class LabelTest extends Application
{

    @Override
    public void start(final Stage primaryStage)
    {
        final Group root = new Group();
        final Scene scene = new Scene(root, 300, 130, Color.WHITE);

        final GridPane gridpane = new GridPane();
        gridpane.setPadding(new Insets(5));
        gridpane.setHgap(10);
        gridpane.setVgap(10);

        final Label label = new Label("Label");
        label.setStyle("-fx-font-size:44px;-fx-font-weight: bold;-fx-text-fill:#5E34B1;-fx-background-color:#ffc300;");
        GridPane.setHalignment(label, HPos.CENTER);
        gridpane.add(label, 0, 0);

        root.getChildren().add(gridpane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

ItachiUchiha.. 6

其中一种更动态的方法是使用a Text而不是Label并设置boundsTypeas VISUAL.无论字体大小如何,这都会导致Text在文本的任何一侧都没有任何填充.

Text text = new Text();
text.setBoundsType(TextBoundsType.VISUAL);


Sergey Grine.. 5

您可以通过添加-fx-padding: -10 0 0 0;样式列表来实现.

对于更灵活的解决方案,您可以使用FontMetrics的信息:

FontMetrics metrics = Toolkit.getToolkit().getFontLoader().getFontMetrics(label.getFont());
label.setPadding(new Insets(-metrics.getDescent(), 0, 0, 0));

注意:你需要在之后调用该代码scene.show().之前图形引擎尚未准备好提供正确的指标.



1> ItachiUchiha..:

其中一种更动态的方法是使用a Text而不是Label并设置boundsTypeas VISUAL.无论字体大小如何,这都会导致Text在文本的任何一侧都没有任何填充.

Text text = new Text();
text.setBoundsType(TextBoundsType.VISUAL);



2> Sergey Grine..:

您可以通过添加-fx-padding: -10 0 0 0;样式列表来实现.

对于更灵活的解决方案,您可以使用FontMetrics的信息:

FontMetrics metrics = Toolkit.getToolkit().getFontLoader().getFontMetrics(label.getFont());
label.setPadding(new Insets(-metrics.getDescent(), 0, 0, 0));

注意:你需要在之后调用该代码scene.show().之前图形引擎尚未准备好提供正确的指标.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有