可折叠的SWT面板
来源:互联网 发布:网络暴力的成因 编辑:程序博客网 时间:2024/05/05 16:59
一个可折叠的SWT写的面板,点击面板能够显示出隐藏的控件,其中折叠区域的DataTime是日期时间控件,如果想正常显示这个控件的效果,一定要把eclipse换成最新的eclipse3.3,我在官网上看到的最新版是eclipse3.3M6;
SWT-Designer要用SWT-Designer6.0,只有这个版本的SWT-Designer才支持eclipse3.3里面的时间控件。
我在eclipse SWT/Jface核心应用这本书里面看到,作者利用在rcp中利用eclipse表单实现了一个可折叠的面板,书中也提到了SWT可以用eclipse表单,但是没有具体的实现代码,我利用书中内容实现了一个在SWT中应用eclipse表单。
下面是代码:
package com.lw.swt;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.layout.grouplayout.GroupLayout;
import org.eclipse.swt.layout.grouplayout.LayoutStyle;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.events.ExpansionAdapter;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
public class NeTest ...{
/** *//**
* Launch the application
* @param args
*/
public static void main(String[] args) ...{
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(500, 375);
shell.setText("SWT Application");
shell.setLayout(new FillLayout());
//创建表单对象
FormToolkit ft = new FormToolkit(shell.getDisplay());
//通过表单工具对象创建可滚动的表单对象
final ScrolledForm form = ft.createScrolledForm(shell);
//表单文本
form.setText("swt表单example");
//设置表单布局
form.getBody().setLayout(new TableWrapLayout());
//创建可折叠的面板
ExpandableComposite ec = ft.createExpandableComposite(form.getBody(),
ExpandableComposite.TWISTIE);
ec.setText("可折叠面板ExpandableComposite");
//定义字符串
String txt = "测试";
//创建一个标签并显示字符串
Label lb = ft.createLabel(ec, txt,SWT.WRAP);
//将Label作为折叠面板的折叠区域
ec.setClient(lb);
//为折叠面板添加展开 折叠的监听器
ec.addExpansionListener(new ExpansionAdapter()...{
public void expansionStateChanged(ExpansionEvent e )...{
//根据部件的新尺寸重新定位和更新滚动条
form.reflow(true);
}
});
//创建内容区域 样式TWISTIE 显示背景标题TITLE_BAR
Section st = ft.createSection(form.getBody(), Section.TWISTIE|Section.TITLE_BAR);
st.setText("内容区域Section");
//创建一个面板 作为内容折叠区域放置的控件
Composite cs = ft.createComposite(st);
cs.setLayout(new GridLayout());
Button btt1;
Button btt2;
Text text;
btt1 = ft.createButton(cs,"系统资料",SWT.TOGGLE | SWT.FLAT | SWT.BORDER);
btt2 = ft.createButton(cs,"个人资料", SWT.TOGGLE);
text = ft.createText(cs, txt, SWT.NONE);
text.setText("填写数据");
st.setClient(cs);
//为折叠面板添加展开 折叠的监听器
st.addExpansionListener(new ExpansionAdapter()...{
public void expansionStateChanged(ExpansionEvent e )...{
//根据部件的新尺寸重新定位和更新滚动条
form.reflow(true);
}
});
DateTime dt1 = new DateTime(cs,SWT.CALENDAR);
DateTime time = new DateTime(cs,SWT.TIME);
DateTime data = new DateTime(cs,SWT.DATE);
shell.open();
shell.layout();
while (!shell.isDisposed()) ...{
if (!display.readAndDispatch())
display.sleep();
}
ft.dispose();
display.dispose();
}
}
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.layout.grouplayout.GroupLayout;
import org.eclipse.swt.layout.grouplayout.LayoutStyle;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.events.ExpansionAdapter;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
public class NeTest ...{
/** *//**
* Launch the application
* @param args
*/
public static void main(String[] args) ...{
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(500, 375);
shell.setText("SWT Application");
shell.setLayout(new FillLayout());
//创建表单对象
FormToolkit ft = new FormToolkit(shell.getDisplay());
//通过表单工具对象创建可滚动的表单对象
final ScrolledForm form = ft.createScrolledForm(shell);
//表单文本
form.setText("swt表单example");
//设置表单布局
form.getBody().setLayout(new TableWrapLayout());
//创建可折叠的面板
ExpandableComposite ec = ft.createExpandableComposite(form.getBody(),
ExpandableComposite.TWISTIE);
ec.setText("可折叠面板ExpandableComposite");
//定义字符串
String txt = "测试";
//创建一个标签并显示字符串
Label lb = ft.createLabel(ec, txt,SWT.WRAP);
//将Label作为折叠面板的折叠区域
ec.setClient(lb);
//为折叠面板添加展开 折叠的监听器
ec.addExpansionListener(new ExpansionAdapter()...{
public void expansionStateChanged(ExpansionEvent e )...{
//根据部件的新尺寸重新定位和更新滚动条
form.reflow(true);
}
});
//创建内容区域 样式TWISTIE 显示背景标题TITLE_BAR
Section st = ft.createSection(form.getBody(), Section.TWISTIE|Section.TITLE_BAR);
st.setText("内容区域Section");
//创建一个面板 作为内容折叠区域放置的控件
Composite cs = ft.createComposite(st);
cs.setLayout(new GridLayout());
Button btt1;
Button btt2;
Text text;
btt1 = ft.createButton(cs,"系统资料",SWT.TOGGLE | SWT.FLAT | SWT.BORDER);
btt2 = ft.createButton(cs,"个人资料", SWT.TOGGLE);
text = ft.createText(cs, txt, SWT.NONE);
text.setText("填写数据");
st.setClient(cs);
//为折叠面板添加展开 折叠的监听器
st.addExpansionListener(new ExpansionAdapter()...{
public void expansionStateChanged(ExpansionEvent e )...{
//根据部件的新尺寸重新定位和更新滚动条
form.reflow(true);
}
});
DateTime dt1 = new DateTime(cs,SWT.CALENDAR);
DateTime time = new DateTime(cs,SWT.TIME);
DateTime data = new DateTime(cs,SWT.DATE);
shell.open();
shell.layout();
while (!shell.isDisposed()) ...{
if (!display.readAndDispatch())
display.sleep();
}
ft.dispose();
display.dispose();
}
}
CALENDAR,TIME,DATE是DateTime 显示的三种形式,具体的效果大家自己运行代码看看吧,我的图帖不上来
DateTime 的用法如下很简单的就一行代码就能出来:
DateTime dt1 = new DateTime(cs,SWT.?);其中“?” 代表调用CALENDAR,TIME,DATE中的任何一个。
我的开发环境 eclipse3.3M6+SWT-Designer6.0
谁能告诉我怎么贴图啊,我的图总是贴不上来
- 可折叠的SWT面板
- Accordion:可折叠面板的集合
- spry 可折叠面板的 js代码
- ng2搭建系统-Accordion可折叠的面板
- SWT编写Moco的启动控制面板
- SWT:滚动面板
- altas(ajax)控件(七):CollapsiblePanel可折叠面板
- altas(ajax)控件(七):CollapsiblePanel可折叠面板
- SWT ScrolledComposite滚动面板设置
- JAVA SWT 控件与面板
- 自定义可折叠的控件
- 可折叠成小托车的自行车
- 可折叠的标题栏
- 可折叠的标题栏_CSS
- 可折叠的留言板
- CollapsingToolbarLayout可折叠的toolbar
- 可折叠的listview
- Android可折叠的textview
- Microsoft ASP.NET 快速入门教程的大纲介绍(一个值得推荐的.net网站也可以说是.net资料库)
- 翻译暂告一段落!
- 郁闷!
- 恶灌满门2007-04-12(早餐)
- EOMapX序
- 可折叠的SWT面板
- PIA (Primary Interop Assembly) & AIA (Alternate Interop Assembly)简介
- RDLC报表部署的问题
- 一学就会魔法书--中文Dreamweaver网页制作真是一本好书
- Webwork Result失效的一个错误
- 优化一般思路/模式(三)
- 博客访问量逼近30000大关,多谢大家支持
- NGN五大协议
- WebWork中动态生成Result