`
univasity
  • 浏览: 811496 次
  • 性别: 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)体验之Sash(活动控件)

    在这个场景中,我们主要关注的是SWT中的Sash控件。 Sash控件在GUI设计中起着分割窗口或面板的作用,允许用户通过拖动分隔线来调整两个或多个区域的大小。在提供的示例代码中,可以看到如何在SWT中创建和使用Sash。 ...

    SWT教程之FormLayout介绍

    在SWT(Standard Widget Toolkit)框架中,FormLayout是一种非常灵活且强大的布局管理器,主要用于控制组件在容器中的位置和大小。它允许开发者通过精确指定组件的边界来实现复杂的用户界面设计。FormLayout非常适合...

    SWT 各种小示例集中

    SWT(Standard Widget Toolkit)是Java编程环境中用于创建图形用户界面(GUI)的一种库,它由Eclipse基金会维护。SWT提供了丰富的控件和API,让开发者能够构建高性能、原生外观的应用程序。与Java Swing不同,SWT...

    [原创]用SWT/JFace实现的深路径自动生成软件(附源码)

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

    学习SWT,RCP的笔记.doc

    下面以`Button`为例详细介绍SWT中的一些常用方法及其用途: 1. **setText(String string)**: 设置按钮上的文本。 2. **setToolTipText(String string)**: 设置鼠标悬停时显示的提示文本。 3. **setBounds(int x, ...

    SWT&JFACE GEF or Eclipse Platform

    SWT(Standard Widget Toolkit)与JFace是Eclipse平台中用于构建图形用户界面(GUI)的重要工具包。它们提供了一种高效且可移植的方式来创建Java应用程序的用户界面,弥补了Java原生GUI库如AWT和Swing在界面效果和...

    JFace_SWT.doc

    - **SashForm**: 分割容器,可以将窗口分为几个区域,并且可以调整这些区域的大小。 - **ScrolledComposite**: 滚动容器,当其内容超出窗口大小时,会自动添加滚动条。 - **Shell**: 顶层容器,相当于一个窗口。 ##...

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

    eclipse开发技术详解第6章 容器

    面板是SWT中最基本的容器类型,它允许开发者创建一个区域来容纳其他组件。`Composite`类是所有容器的基础,可以嵌套使用,提供了一种层次化的组件结构。通过`getChildren()`方法可以获取到面板上的所有子组件,`...

    JFace-TableTree的若干问题.doc

    在Windows XP上,TableTree组件在展开或收缩节点时,列宽会保持不变,但在OS X中,当树节点被展开时,包含树的列会自动扩展,导致后续的列部分隐藏在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