【问题标题】:Eclipse plugin view - How to add and dispose composites on the flyEclipse 插件视图 - 如何动态添加和处置复合材料
【发布时间】:2016-06-13 21:19:59
【问题描述】:

用例很简单:

在滚动合成中,我有一个下拉菜单,当我从中选择一个项目时,会在下面的网格布局中生成几个 ChartComposite。

然后我再次选择下拉菜单,单击另一个项目,所有先前生成的合成都被释放,视图被新的合成填充。

现在了解更多详情:

Dropdown 和 ChartComposites 都包含在常规 Composite 中 (因为我只能将一个 Composite 设置为具有网格布局的 ScrolledComposite),因为我希望它们以某种方式排列。

问题是我不知道如何在创建视图后调用 createPartControl() 以处理我不再需要的复合材料并创建新的复合材料。

我尝试使用内容提供程序,但我认为它不适用于预制复合材料,因为结果是它应该返回的 ChartComposites 被转换为对象并且不再是...图表。

我考虑过使用 StackLayout,但我确实需要我目前拥有的 GridLayout,所以它不起作用。

那么有没有人知道一种快速简便的方法来通过侦听器(选择下拉项、按下按钮等)处理和添加复合到已创建的视图?

【问题讨论】:

  • 您可以结合 StackLayout 和 GridLayout 来实现这一点,而无需费力尝试 dispose 的东西。
  • 我可以在同一个组合中使用它们,还是我必须制作另一个只包含图表的组合(按网格布局排列),而另一个组合包含下拉列表和这个组合,使用堆栈布局?

标签: java eclipse-plugin swt jfreechart


【解决方案1】:

您可以使用StackLayoutGridLayout 来实现这一点,而不必乱用dispose

从您的问题中不清楚 GUI 设计到底是什么。以下代码堆叠多个复合子代:

Composite parent = new Composite(body, SWT.NONE);
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
StackLayout layout = new StackLayout();
parent.setLayout(layout);

Composite child1 = new Composite(parent, SWT.NONE);
child1.setLayout(new GridLayout());
// TODO .... add controls to child1 for first 'page'

Composite child2 = new Composite(parent, SWT.NONE);
child2.setLayout(new GridLayout());
// TODO .... add controls to child2 for second 'page'

layout.topControl = child;
layout.layout();

【讨论】:

  • 我得去看看,看看能不能做点什么。我注意到 StackLayout 可以将一个复合材料放在顶部,这是我选择的复合材料。对我来说,这有点复杂,我希望能够在视图中添加多达 200 个复合材料,并且只需按一下按钮就可以摆脱所有这些复合材料,并将 100 个其他复合材料放在它们的位置上。如果我将它们放入一个组或组合中作为它们的容器并将其放置为 StackLayout 页面,也许它可能会起作用。
  • 您只需将所有复合材料作为单个复合材料的子代。
  • 我还注意到 ScrolledComposite 的 setContent(composite) 方法可以从侦听器中调用,它会即时更改滚动区域。使用它有什么缺点吗?
  • 您只需要调用一次 setContent。我不知道如果你多次调用它会发生什么。
  • 在创建了大约 10 次和 2000 个复合材料之后(总共,是的,我一次有大约 200 个图表),它因 org.eclipse.swt.SWTError: No more handle 而崩溃。有趣的是,虽然我没有完全处理每种字体和颜色,但我确实在创建另一个用于切换的组合之前处理了包含图表的先前组合。
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 2020-12-26
  • 2015-12-07
相关资源
最近更新 更多