Java 在SWT中实现自定义折叠/扩展行为的编码习惯用法

Java 在SWT中实现自定义折叠/扩展行为的编码习惯用法,java,swt,eclipse-rcp,eclipse-plugin,Java,Swt,Eclipse Rcp,Eclipse Plugin,我有一个自定义小部件(包含其他组合的组),看起来像: 我想实现这样一种行为,当用户双击“某个文本”时,小部件会折叠成类似的形状 如果再次双击“某些文本”,则小部件将扩展到原始版本 我可以通过销毁/创建绿色矩形内的其他小部件(即小文本、圆形矩形和圆形)来实现这一点,然后双击绿色矩形调用pack(),但我想知道是否有一种更优雅的编码习惯来实现所描述的行为?注意:我不想使用带有指定切换按钮的小部件(例如,PGroup)。如果您在每个项目上使用GridLayout和GridData,您可以使用: (Gr

我有一个自定义小部件(包含其他组合的组),看起来像:

我想实现这样一种行为,当用户双击“某个文本”时,小部件会折叠成类似的形状

如果再次双击“某些文本”,则小部件将扩展到原始版本


我可以通过销毁/创建绿色矩形内的其他小部件(即小文本、圆形矩形和圆形)来实现这一点,然后双击绿色矩形调用pack(),但我想知道是否有一种更优雅的编码习惯来实现所描述的行为?注意:我不想使用带有指定切换按钮的小部件(例如,PGroup)。

如果您在每个项目上使用
GridLayout
GridData
,您可以使用:

(GridData)data = (GridData)control.getLayoutData();

data.exclude = true;

control.setVisible(false);

要隐藏控件,当所有控件都隐藏时,请在父组合上使用
layout()
。要再次显示,请反转
排除
设置可见
呼叫。

谢谢,格雷格!这是相当优雅的。有没有什么方法可以减小圆角矩形和圆形(它们是图像对象)的大小,而不必破坏原始图像并用较小尺寸的图像重新创建它们?不确定在本文中图像对象是什么意思。你可以将
标签
setImage
一起使用,只需在两个图像之间切换即可。我使用了类似的方法——在画布上绘制不同大小的图像,这取决于小部件是处于展开状态还是处于折叠状态。我只是想知道是否有一种现有的SWT方法,例如,“放大/缩小”可以用于单个图像,而不是交换不同的图像。