`
univasity
  • 浏览: 800736 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[SWT]SashForm中固定单侧大小(&实现面板隐藏)

阅读更多

<!-- 额,发觉写篇博客都不知怎么选分类了。。。名称太怪了。。。 选“行业应用”对么? 感觉太生硬难懂了 -->

 

最近搞自己的小玩意需要实现这么一个功能,功能菜单的隐藏和显示(不占位),网上说的啥设置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
分享到:
评论
1 楼 blucelee2 2014-12-09  
那么麻烦干吗,而且这种方法会导致,当拉太小的时候样式会丢掉,整个系统会卡住。
直接一个 sashForm.setSashWidth(0); 就可以实现固定了。

相关推荐

    org.eclipse.swt.win32

    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实现的深路径自动生成软件(附源码)

    不过由于是SWT+JFace实现的桌面程序,想研究Java桌面程序应用的朋友也可以下载看看,其一些特性及设计思路还是比较有用的。 &lt;br&gt;详细资料及截图请参考压缩包中doc/how to run.doc文档 &lt;br&gt;新特性: 支持拽...

    Eclipse_Swt_Jface_核心应用_部分19

    第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(JFace)体验之Sash(活动控件)

    Eclipse插件开发之Jface

    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 ...

    快照:使用JRuby和Glimmer并从Logo和Scratch汲取灵感的Ruby教学游乐场

    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....

    simple.zip

    swt常有控件入门demo Button1.java Canvas1.java Combo1.java Menu1.java SashForm1.java ScrolledComposite1.java SimpleEditor1.java SimpleEditor2.java Slider1.java TabFolder1.java ToolBarExample.java ...

Global site tag (gtag.js) - Google Analytics