我的Eclipse插件中有一个表,当它的数据发生变化时,它不会垂直伸展。我做viewer.refresh()
来显示新数据,但表只显示一行。
如果我最小化窗口并恢复它,那么表会增长以显示所有行。与相同类型的gui重新布局相比,我需要调用什么来触发?
(表位于GridLayout中,设置为双向增长)
答案 0 :(得分:2)
您所看到的问题是由于父母不知道孩子何时需要更多空间这一事实造成的。
您可以通过调用以下任一方法强制父级重新计算其Layout
(并通过该方式询问孩子所需的大小):
如果接收器有布局,则要求布局布局(即设置接收器的子节点的大小和位置)。如果接收器没有布局,则什么也不做。
如果接收器有布局,则要求布局布局(即设置接收器的子节点的大小和位置)。如果参数为true,则布局不得依赖于已缓存的有关直接子节点的任何信息。如果它是假的,布局可以(可能)通过假设接收器的子节点自上次布局以来没有改变状态来优化它正在进行的工作。如果接收器没有布局,则什么也不做。
Composite.layout(boolean, boolean)
:
如果接收器有布局,则要求布局布局(即设置接收器的子节点的大小和位置)。如果更改的参数为true,则布局不得依赖于缓存有关其子项的任何信息。如果它是假的,布局可以(可能)通过假设接收器的子节点自上次布局以来没有改变状态来优化它正在进行的工作。如果all参数为true,则布局将在接收者的窗口小部件树中的所有子窗口小部件中向下级联,无论子级是否已更改大小。已更改的参数将应用于所有布局。如果all参数为false,则布局不会在接收器的窗口小部件树中的所有子窗口小部件中向下级联。但是,如果由于调用布局而调整子项的大小,则resize事件将调用子项的布局。请注意,由于调整大小而导致的布局不会刷新任何缓存的信息(与布局(false)相同)。