分享
 
 
 

Eclipse插件开发系列5.SWT中的布局管理器(3)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

*************************************************************************************

作者:陈刚,桂林人,97年毕业于广西师范大学数学系,专注于java平台。现(2004.2-?)暂在IBM中国研究中心进行Eclipse插件的开发。

Email: glchengang@163.com

blog:glchengang.yeah.net

*************************************************************************************

StackLayout称做堆栈式布局,所谓堆栈式就象一付叠在一起的扑克牌,一叠UI面板只显示位于最上面的那个面板。如下图,是Eclipse中比较典型的用到堆栈式布局的界面(打开方法:主菜单窗口-->首选项)。右边部分就是一个堆栈式的布局,当左边选不同的项,右边就显示这一项相应的面板。

?

StackLayout布局的使用是比较简单的。下面我们来写一个用StackLayout的例子,代码如下:

/*

?* 陈刚 ,创建日期 2004-6-10

?*

?* Email: glchengang@yeah.net

?* Blog : glchengang.yeah.net

?*/

package net.yeah.glchengang.layout;

import org.eclipse.swt.SWT;

import org.eclipse.swt.custom.StackLayout;

import org.eclipse.swt.events.SelectionAdapter;

import org.eclipse.swt.events.SelectionEvent;

import org.eclipse.swt.events.SelectionListener;

import org.eclipse.swt.layout.FillLayout;

import org.eclipse.swt.layout.RowLayout;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Composite;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Text;

public class StackLayoutApp {

??? /*

???? * 因为要在按钮b1,b2的事件中调用,所以以下变量必须定义成属性(类变量)

???? * 否则在按钮b1,b2的事件中是访问不到的

???? */

??? private Composite c;

??? private Text t1;

??? private Text t2;

??? private Text t3;

??? private StackLayout stackLayout = new StackLayout();

??? public static void main(String[] args) {

??????? StackLayoutApp window = new StackLayoutApp();

??????? window.open();

??? }

??? public void open() {

??????? Display display = new Display();

??????? Shell shell = new Shell();

??????? shell.setLayout(new FillLayout());

??????? shell.setText("SWT Application");

??????? //--------------核心代码如下:start------------------------

??????? {

??????????? /*

???????????? * 在c面板下有两个Text框,因为c为stackLayout布局,

???????????? * 所以这两个Text框是重叠在一起的

???????????? */

??????????? c = new Composite(shell, SWT.NONE);

??????????? c.setLayout(stackLayout);

??????????? t1 = new Text(c, SWT.BORDER);

??????????? t1.setText("11111111111111");

??????????? t2 = new Text(c, SWT.BORDER);

??????????? t2.setText("222222222222");

??????? }

??????? {

??????????? /*

???????????? * 建立两个按钮来改变上面两个text框的显示

???????????? */

??????????? Composite composite = new Composite(shell, SWT.NONE);

??????????? composite.setLayout(new RowLayout());

??????????? Button b1 = new Button(composite, SWT.NONE);

??????????? b1.setText("显示111111111");

??????????? b1.addSelectionListener(new SelectionListener() { //点击事件

??????????????? public void widgetSelected(SelectionEvent e) {

??????????????????? /*****************************************************

???????????????????? * --------下面两句是StackLayout的关键----------------

???????????????????? ****************************************************/

??????????????????? stackLayout.topControl = t1; //将t1框显示

??????????????????? c.layout(); //将界面刷新一下,否则显示上会没任何反映的

??????????????? }

??????????????? public void widgetDefaultSelected(SelectionEvent e) {}

??????????? });

??????????? Button b2 = new Button(composite, SWT.NONE);

??????????? b2.setText("显示2222222222");

??????????? //这里也可以用SelectionAdapter这个适配器,它是SelectionListener的空实现

??????????? b2.addSelectionListener(new SelectionAdapter() {

??????????????? public void widgetSelected(SelectionEvent e) {

??????????????????? stackLayout.topControl = t2;

??????????????????? c.layout();

??????????????? }

??????????? });

??????? }

??????? //--------------核心代码如上:end------------------------???????

??????? shell.open();

??????? while (!shell.isDisposed()) {

??????????? if (!display.readAndDispatch())

??????????????? display.sleep();

??????? }

??? }

}

运行效果图如下:

?

点击按钮"显示11111"时,图变化如下:

?

点击按钮"显示22222"时,图变化如下:

?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有