<!-- 额,发觉写篇博客都不知怎么选分类了。。。名称太怪了。。。 选“行业应用”对么? 感觉太生硬难懂了 -->
最近搞自己的小玩意需要实现这么一个功能,功能菜单的隐藏和显示(不占位),网上说的啥设置layout的参数,貌似必须是GridLayout才有那玩意的,我试了直接将组件setVisible(false);是不行的。
经试验,利用SashForm可以实现。
首先是隐藏和显示,只要composite.setVisible([true|false]);就OK了:
composite.setVisible(enable);
composite.getParent().layout();
然后有个问题,就是Sash中每个分区的大小会按比例自动缩放,我希望其中一侧大小(宽度/高度之一)固定。
后来灵机一动,发现只要监听其大小变化,然后强行设置不就可以,毕竟固定的大小是预先知道的:
int compositeH = 164; // 组件固定高度
sashForm.addControlListener(new ControlListener() {
@Override
public void controlResized(ControlEvent e) {
Point p =sashForm.getSize();
sashForm.setWeights(new int[]{p.y-compositeH, compositeH}); // 这里是关键
}
@Override
public void controlMoved(ControlEvent e) {}
});
就是这么一个效果(整个都藏起来了,而且窗口变化不影响其大小):
记录下来,希望能帮上遇到同样问题的朋友。
- 大小: 17.5 KB
- 大小: 3.8 KB
分享到:
相关推荐
org.eclipse.swt.custom.SashForm.class org.eclipse.swt.custom.SashFormData.class org.eclipse.swt.custom.SashFormLayout.class org.eclipse.swt.custom.ScrolledComposite.class org.eclipse.swt.custom....
不过由于是SWT+JFace实现的桌面程序,想研究Java桌面程序应用的朋友也可以下载看看,其一些特性及设计思路还是比较有用的。 <br>详细资料及截图请参考压缩包中doc/how to run.doc文档 <br>新特性: 支持拽...
第8章 SWT中的事件模型 126 8.1 事件模型概述 126 8.1.1 监听器(Listener) 126 8.1.2 事件(Event) 127 8.1.3 注册监听器 127 8.1.4 适配器 128 8.1.5 常见的事件 128 8.2 事件处理的常用写法 130 ...
SWT(JFace)体验之Sash(活动控件)
SWT UI之分隔框容器SashForm 5. SWT UI之进度条ProgressBar 6. SWT UI之时间控件DateTime 7. SWT layout之堆叠布局StackLayout 8. swt & jface ui可视化工具安装 9. swt & jface ui可视化工具使用一 10. swt ...
Eclipse SWT文档-SashForm,CTabFolder等笔记将.mov转换为.gif并尝试优化ffmpeg -i 21-01-24_snap_demo.mov -pix_fmt rgb24 -r 24 -s 1440x900 snap_demo1.gifconvert -layers Optimize snap_demo1.gif snap_demo1o....
swt常有控件入门demo Button1.java Canvas1.java Combo1.java Menu1.java SashForm1.java ScrolledComposite1.java SimpleEditor1.java SimpleEditor2.java Slider1.java TabFolder1.java ToolBarExample.java ...