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

JavaFX问题:HBox.setHgrow未生效,标签无法占满横向空间并居右

问题

运行以下Kotlin代码后,标签“Label”并未显示在应用窗口右侧,且HBox.setHgrow未让标签获取全部可用横向空间,请问问题出在哪里?

package com.example.javafxwindow

import javafx.application.Application
import javafx.geometry.Pos
import javafx.scene.Scene
import javafx.scene.control.Label
import javafx.scene.layout.HBox
import javafx.scene.layout.Priority
import javafx.stage.Stage


class HelloApplication : Application()
{
    override fun start(stage: Stage)
    {
        val label = Label("Label")
        label.alignment = Pos.CENTER_RIGHT
        HBox.setHgrow(label, Priority.ALWAYS)
        val hbox = HBox(label)

        val scene = Scene(hbox, 400.0, 400.0)
        stage.scene = scene
        stage.show()
    }
}

fun main()
{
    Application.launch(HelloApplication::class.java)
}
解答

核心问题在于Label默认不会填充分配给它的可用空间:

  • HBox.setHgrow(label, Priority.ALWAYS)确实让HBox给Label分配了尽可能多的横向空间,但Label的默认宽度是自适应内容的,不会主动占满这些空间。
  • label.alignment = Pos.CENTER_RIGHT是控制Label内部文本的对齐方式,但只有当Label本身有足够宽度时,这个对齐效果才会显现。

修复方法很简单,给Label设置maxWidth = Double.MAX_VALUE,让它可以扩展到分配到的最大宽度:

package com.example.javafxwindow

import javafx.application.Application
import javafx.geometry.Pos
import javafx.scene.Scene
import javafx.scene.control.Label
import javafx.scene.layout.HBox
import javafx.scene.layout.Priority
import javafx.stage.Stage


class HelloApplication : Application()
{
    override fun start(stage: Stage)
    {
        val label = Label("Label")
        label.alignment = Pos.CENTER_RIGHT
        // 允许Label占满分配到的全部宽度
        label.maxWidth = Double.MAX_VALUE
        HBox.setHgrow(label, Priority.ALWAYS)
        val hbox = HBox(label)

        val scene = Scene(hbox, 400.0, 400.0)
        stage.scene = scene
        stage.show()
    }
}

fun main()
{
    Application.launch(HelloApplication::class.java)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:15:27