Eclipse 插件视图 - 如何动态添加和处理复合材料
Eclipse plugin view - How to add and dispose composites on the fly
用例很简单:
在 Scrolled Composite 中,我有一个下拉菜单,当我从其中 select 一个项目时,会在下方的网格布局中生成多个 ChartComposite。
然后我再次 select 下拉菜单,我单击另一个项目,所有以前生成的组合都被处理掉,视图中填充了新的。
现在了解更多详情:
Dropdown 和 ChartComposites 都包含在一个常规的 Composite 中
(因为我只能将一个 Composite 设置为 ScrolledComposite)它有一个网格布局,因为我希望它们以某种方式排列。
问题是我不知道如何在创建视图后调用 createPartControl() 以处理我不再需要的复合材料并创建新的复合材料。
我尝试使用 Content Provider,但我认为它不适用于预制的 Composites,因为结果是 ChartComposites 它应该 return 被转换为对象并且不再...图表。
我考虑过使用 StackLayout,但我确实需要我目前拥有的 GridLayout,所以它不起作用。
那么有没有人知道通过侦听器(select 下拉项、按下按钮等)处理组合并将其添加到已创建视图的快速简便的方法?
您可以使用 StackLayout
和 GridLayout
来实现此目的,而不必乱用 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();
用例很简单:
在 Scrolled Composite 中,我有一个下拉菜单,当我从其中 select 一个项目时,会在下方的网格布局中生成多个 ChartComposite。
然后我再次 select 下拉菜单,我单击另一个项目,所有以前生成的组合都被处理掉,视图中填充了新的。
现在了解更多详情:
Dropdown 和 ChartComposites 都包含在一个常规的 Composite 中 (因为我只能将一个 Composite 设置为 ScrolledComposite)它有一个网格布局,因为我希望它们以某种方式排列。
问题是我不知道如何在创建视图后调用 createPartControl() 以处理我不再需要的复合材料并创建新的复合材料。
我尝试使用 Content Provider,但我认为它不适用于预制的 Composites,因为结果是 ChartComposites 它应该 return 被转换为对象并且不再...图表。
我考虑过使用 StackLayout,但我确实需要我目前拥有的 GridLayout,所以它不起作用。
那么有没有人知道通过侦听器(select 下拉项、按下按钮等)处理组合并将其添加到已创建视图的快速简便的方法?
您可以使用 StackLayout
和 GridLayout
来实现此目的,而不必乱用 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();