【问题标题】:Triggering gui update in Eclipse (table not expanding as it should)在 Eclipse 中触发 gui 更新(表未按应有的方式扩展)
【发布时间】:2014-06-20 01:41:43
【问题描述】:

我的 Eclipse 插件中有一个表格,当它的数据发生变化时,它没有垂直伸展。我做了一个viewer.refresh() 来显示新数据,但表格只显示一行。

如果我最小化窗口并恢复它,那么表格会增长以显示所有行。我需要调用什么来触发相同类型的 gui 重新布局?

(表格在GridLayout中,设置为双向增长)

【问题讨论】:

  • 您是否尝试在观看者的父 Composite 上调用 layout()layout(true, true)
  • 谢谢@Baz,我想有类似的东西,但我就是没找到。

标签: java user-interface eclipse-plugin swt


【解决方案1】:

您看到的问题是由于父母不知道孩子何时需要更多空间。

您可以通过调用以下任一方法来强制父级重新计算其Layout(并询问子级所需的大小):

  • Composite.layout():

    如果接收者有布局,则要求布局对接收者的孩子进行布局(即设置大小和位置)。如果接收者没有布局,什么也不做。

  • Composite.layout(boolean):

    如果接收者有布局,则要求布局对接收者的孩子进行布局(即设置大小和位置)。如果参数为真,则布局不得依赖于它缓存的有关直接子级的任何信息。如果它是假的,布局可以(潜在地)通过假设接收者的孩子自上次布局以来没有改变状态来优化它正在做的工作。如果接收者没有布局,什么也不做。

  • Composite.layout(boolean, boolean):

    如果接收者有布局,则要求布局对接收者的孩子进行布局(即设置大小和位置)。如果 changed 参数为真,则布局不得依赖于其缓存的有关其子项的任何信息。如果它是假的,布局可以(潜在地)通过假设接收者的孩子自上次布局以来没有改变状态来优化它正在做的工作。如果 all 参数为真,则布局将通过接收器的小部件树中的所有子小部件向下级联,无论子小部件是否已更改大小。更改的参数适用于所有布局。如果 all 参数为 false,则布局将不会通过接收器的小部件树中的所有子小部件向下级联。但是,如果由于调用布局而调整了子级的大小,则调整大小事件将调用子级的布局。请注意,由于调整大小而导致的布局不会刷新任何缓存信息(与 layout(false) 相同)。

【讨论】:

    猜你喜欢
    • 2017-07-16
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2017-10-29
    • 2014-09-10
    • 2012-04-10
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多