You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX 8 Label垂直文本行间距过大问题求助

解决JavaFX 8 Label垂直文本行间距过大的问题

这个问题我太熟悉了!用prefWidth=0加wrapText=true实现垂直文本时,-fx-line-spacing: 0没效果的原因是——它只控制行与行之间的额外间距,而每行本身的高度(行高)还是默认的大于字体实际高度的值,所以字符之间还是会有明显的空隙。

解决这个问题的关键是调整-fx-line-height属性,它控制每行的总高度(包含字体本身和上下的默认间距)。默认的line-height通常是1.2左右,所以即使你把line-spacing设为0,行高本身还是会撑开间距。

给你一个可用的CSS方案:

#label_north {
    -fx-line-spacing: 0;          /* 清除额外行间距 */
    -fx-line-height: 1;           /* 让行高等于字体高度,这是核心 */
    /* 如果需要更紧凑,可以尝试0.9,根据字体大小调整 */
    /* -fx-line-height: 0.9; */
}

你也可以直接把样式内联到Label标签里:

<Label fx:id="label_north" 
       style="-fx-line-spacing: 0; -fx-line-height: 1;"
       alignment="BOTTOM_CENTER" 
       prefHeight="240.0" 
       prefWidth="0.0" 
       textAlignment="CENTER" 
       wrapText="true">
    <padding>
        <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
    </padding>
</Label>

原理说明

  • -fx-line-spacing:仅控制两行文本之间额外添加的间距,默认是0,但如果行高本身大,还是会有空隙。
  • -fx-line-height:设置每行的高度相对于字体大小的倍数,设为1时,行高刚好等于字体的em高度,字符上下的默认空隙就被去掉了,垂直排列的字符就会紧凑很多。

如果调整后还有细微间距,可以检查一下字体本身的内置间距(有些字体本身字符上下有留白),这时候可以尝试微调-fx-line-height到小于1的值,比如0.85,直到达到你想要的效果。

内容的提问来源于stack exchange,提问作者Irash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:37:23