【问题标题】:JavaFX layouts questionJavaFX 布局问题
【发布时间】:2011-02-05 08:05:35
【问题描述】:

我在理解 JavaFX 中的布局时遇到了一些问题。考虑以下代码。

阶段 { 标题:“列表视图测试” 场景:场景{ 宽度:400 身高:400 内容: [ 垂直框 { 内容: [ 列表显示 { 身高:200 宽度:200 项目:[“项目1”,“项目2”] } ] } ] } }

我期待 ListView 以 200 x 200 的尺寸显示,但无论我如何尝试解决此问题,ListView 的宽度和高度似乎都是固定的。但是下面的代码可以按照我的意图显示 ListView。

阶段 { 标题:“列表视图测试” 场景:场景{ 宽度:400 身高:400 内容: [ 列表显示 { 身高:200 宽度:200 项目:[“项目1”,“项目2”] } ] } }

那么,这里的问题是什么?我不能在布局中使用 ListView?

【问题讨论】:

  • JavaFX 中的布局似乎被严重破坏了。我看到 HBox、VBox 上报告的错误很少。我还将我的观察提交给 JavaFX Jira:RT-8411。希望在 SDK 1.3 中全部修复。

标签: listview javafx layout hbox vbox


【解决方案1】:

在 JavaFX 1.2.x 中,布局中节点的宽度和高度信息用于阅读目的。如果要指定“首选”维度,请使用

ListVIew {
    layoutInfo: LayoutInfo {width: 200, height: 200}
}

这将在布局中作为首选尺寸进行处理,组件将根据此进行布局。如果您有使用 NetBeans JavaFX Composer Preview 的经验,您可能会注意到生成的代码使用特殊类型的绑定,允许在布局和其他容器(场景、组)中正确调整大小。

Ad Broken:Java FX 中的布局是基于 Node 构建的,并使用算法方法来定位和调整组件的大小,这与 Group/Scene 中使用的几何位置无关。不幸的是,在 1.2 中,它带来了某种二元性,这应该会误导初学者。

【讨论】:

    【解决方案2】:

    允许布局节点改变其子节点的位置和大小。简单地设置孩子的宽度和高度并期望布局知道它应该尊重您的新值是不好的,您需要某种方式告诉布局节点您想要尊重的值。看看 LayoutInfo 类,以及 Node 中的 layoutInfo 变量。

    【讨论】:

    • 谢谢。 LayoutInfo 对我来说很好。我会习惯这一点,但感觉很奇怪,即使宽度和高度是可写的,你也必须这样做。
    猜你喜欢
    • 2018-10-28
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2013-04-07
    • 2016-07-31
    • 2013-02-17
    相关资源
    最近更新 更多