【问题标题】:Wizard components positioning with hidden values使用隐藏值定位向导组件
【发布时间】:2016-03-02 19:11:49
【问题描述】:

我有一个包含多个组件的向导。在向导上,我有可以过滤结果的下拉菜单,然后隐藏不需要的各种行。但是,当这些行被隐藏时,组件将保留在同一位置,并且不会重新调整大小/向上移动。我认为我的问题与此问题 (SWT components relayout after visibility set to false) 类似,但它使用 RowLayout 代替。我也尝试过复制所做的事情,但它没有改变任何东西。我如何才能将组件放在一起而不是留下空隙?

我还读到 .pack() 和 .revalidate() 可能是选项,但我似乎不知道如何使它们与向导类一起使用。据我所知,它使用 org.eclipse.jface.wizard 作为基本组件。对此的任何建议都非常感谢,如果需要澄清,我会根据需要更新我的问题。

编辑 尝试重新创建上面链接中概述的样式,我想出了这个(请注意项目抽象了一些东西,所以我必须进行一些额外的调用)。然而,在实施之后,我发现程序没有显着差异(例如,所有内容仍然在完全相同的位置,没有间距差异)。

RowData data = new RowData();
RowData data2 = new RowData();
guiPiece.getGUILayout().getPiece("label").setLayoutData(data);
guiPiece.getGUILayout().getPiece("field").setLayoutData(data2);

guiPiece.getGUILayout().getPiece("label").setVisible(newVisibility);
data = (RowData)guiPiece.getGUILayout().getPiece("label").getLayoutData();
data.exclude = !newVisibility;
guiPiece.getGUILayout().getPiece("field").setVisible(newVisibility);
data2 = (RowData)guiPiece.getGUILayout().getPiece("field").getLayoutData();
data2.exclude = !newVisibility;

guiPiece.getFieldParentingControl().layout(true);

【问题讨论】:

  • 您必须完全切换到 GridLayout 和 GridData 才能使链接的答案起作用。
  • 我希望这也是相关的——如果我能找到合适的组件,我可能会尝试的另一个想法是禁用它们而不是隐藏它们。 stackoverflow.com/questions/7727728/…
  • 那是 Swing 而不是 SWT,一个完全不同的 GUI。

标签: java jface


【解决方案1】:

您可以使用与您提供的GridLayout 链接类似的方法,但使用RowLayout

您需要在每个控件上设置RowData 布局数据。

RowData data = new RowData();
control.setLayoutData(data);

RowData 也有一个 exclude 标志,您可以在布局中设置包含/排除控件。

所以要隐藏一个控件,你会这样做:

control.setVisible(false);

RowData data = (RowData)control.getLayoutData();
data.exclude = true;

然后您在向导页面的主 Composite 上调用 layout(true)

【讨论】:

  • 我已经尝试过实现这一点 - 也许我错过了一些东西。我会用我的尝试更新我的问题,也许你可以看到我哪里出了问题。
  • 您必须为每个控件使用单独的RowData 实例,切勿为多个控件使用布局数据。您还没有显示父 Composite 的布局是什么 - 这必须是 RowLayout。我不知道guiPiece.getGUILayout().getPiece("field") 做了什么,所以我不能说这是否正确。
  • .getPiece("fieldname") 返回控件。 getFieldParentingControl 返回组合。
  • 我们需要看到一个minimal reproducible example 才能得到这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多