1.简单的理解布局

shell是充满式布局。放置Composite面板和Button按钮控件。

Composite面板采用StackLayout堆栈式布局,每一次仅仅显示一个文本框。

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.*;
public class D{public static void main(String[] args){Display display=new Display();Shell shell=new Shell(display);shell.setText("StackLayout堆栈式布局");//理解:GridLayout是布局,GridData是设置一个控件的大小//(1)设置shell的布局。指的是shell中的控件是如何放置的。shell.setLayout(new FillLayout(SWT.VERTICAL));//在shell中放置一个面板和一个按钮final Composite composite=new Composite(shell,SWT.NONE);//面板中放置文本框控件final Text[] textArray=new Text[10];for(int i=0;i<textArray.length;i++){textArray[i]=new Text(composite,SWT.MULTI);textArray[i].setText("这是第"+i+"个文本框");}//(2)设置面板的布局。指的是面板中的控件是如何放置的。//composite.setLayout(new GridLayout());final StackLayout stackLayout=new StackLayout();stackLayout.topControl=textArray[0];composite.setLayout(stackLayout);//定义每一个文本框的索引,保存当前文本框的索引值final int[] index=new int[1];Button button=new Button(shell,SWT.PUSH);button.setText("显示下一个文本框");button.addListener(SWT.Selection, new Listener(){public void handleEvent(Event event){//获取下一个索引的值index[0]=(index[0]+1)%10;stackLayout.topControl=textArray[index[0]];//必须重新调整面板composite的布局,否则这个布局是没有效果的composite.layout();}});//打开窗口,进行窗口的显示shell.setSize(400,400);//shell.pack();shell.open();while(!shell.isDisposed()){//当窗口没有被释放的时候if(!display.readAndDispatch()){display.sleep();}        }display.dispose();}
}

2.GridData是控件的大小布局之类的。(这个可以不用看)

(1)Shell有一个布局是GridLayout(网格式布局),体现在Composite面板和Button上。

(2)Composite也有布局,它的布局是StackLayout(堆栈式布局),特点是每次仅能设置一个显示StackLayout.topControl=一个控件。Composite里面的数据布局用的是GridData,利用网格式来进行数据的布局。

图1是默认的网格式布局;图2是SWT.FILL_BOTH应该是网格式数据全屏布局;

图3是SWT.FILL_VERTICAL网格式垂直数据布局;图4是SWT.FILL_HORIZONTAL网格式水平数据布局。

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.*;
public class B{public static void main(String[] args){Display display=new Display();Shell shell=new Shell(display);shell.setText("StackLayout堆栈式布局");//shell采用网格布局shell.setLayout(new GridLayout());//shell必须有布局//(1)创建一个面板,用作放置文本框的面板final Composite composite=new Composite(shell,SWT.NONE);//(2)设置面板的布局数据,设置面板控件的布局数据//默认是图1composite.setLayoutData(new GridData(GridData.FILL_BOTH));//全屏,图2//composite.setLayoutData(new GridData(GridData.FILL_VERTICAL));//垂直,图3//composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));//水平,图4//(3)向面板中添加数据final Text[] textArray=new Text[10];for(int i=0;i<10;i++){textArray[i]=new Text(composite,SWT.MULTI);textArray[i].setText("这是第"+i+"个文本框");}//(4)设置面板的布局为网格式布局
//      GridLayout gridLayout=new GridLayout();
//      gridLayout.numColumns=3;
//      composite.setLayout(gridLayout);//(4)设置面板的布局为堆栈式布局    final StackLayout stackLayout=new StackLayout();composite.setLayout(stackLayout);//(5)设置堆栈中当前显示的控件stackLayout.topControl=textArray[0];//保存当前文本框的索引值final int[] index=new int[1];//在shell窗口中添加一个按钮Button bt=new Button(shell,SWT.PUSH);bt.setText("显示下一个文本框");//bt.addListener(eventType, listener)      bt.addListener(SWT.Selection, new Listener(){public void handleEvent(Event event){//计算下一个文本框的索引值index[0]=(index[0]+1)%10;stackLayout.topControl=textArray[index[0]];//重新布局(必须有)    composite.layout();}});     //打开窗口,进行窗口的显示shell.setSize(400,400);//shell.pack();shell.open();while(!shell.isDisposed()){//当窗口没有被释放的时候if(!display.readAndDispatch()){display.sleep();}        }display.dispose();}
}

StackLayout堆栈式布局相关推荐

  1. 从上往下 流式布局_教大家怎么写前端布局

    一.静态布局(Static Layout) 1. 布局概念 最传统.原始的Web布局设计.网页最外层容器(outer)有固定的大小,所有的内容以该容器为标准,超出宽高的部分用滚动条(overflow: ...

  2. html流式布局怎么用,css 流式布局什么意思?

    流式布局,也叫百分比布局,是移动端开发中经常使用的布局方式之一.流式布局在CSS2时代就有,主要是靠百分比进行排版,可以在不同分辨率下显示相同的版式. 流式布局:网页中主要的划分区域的尺寸使用百分数( ...

  3. css3媒体查询实现网站响应式布局

    响应式建筑设计.响应式家具设计.响应式办公设计,这些词可能是已有的专业名词,也可能是我自己想出来的一些名词. 因为在生活中,我们常常会见到很多让人惊叹的设计,为什么同一套东西经过不同的方式变化之后会给 ...

  4. 判断两个图片的特征向量_响应式布局提高篇 图片正确的打开方式

    作者 | Brilliant Open Web团队 编辑 | Aaron 本文承接上一章的内容,接着介绍响应式布局设计,主要讲如何实现响应式图片.通过对图片适配问题的说明,加深对响应式图片的理解,并分 ...

  5. 总是听别人说响应式布局,原来这么简单

    总听别人说响应式布局,觉得是一个很高大上的东西,近日做的一个项目需要适配不同的屏幕尺寸,于是就简单研究了一下 Web响应式布局,其实原理很简单,下面就简单整理了一下分享给大家. 什么是响应式布局 如图 ...

  6. 02移动端布局基础之流式布局项目实战(京东移动端首页)

    技术交流QQ群:1027579432,欢迎你的加入! 1.技术选型 方案:采取单独制作移动页面方案 技术:布局采取流式布局 2.搭建相关文件夹结构 3.设置视口标签以及引入初始化样式 ``` < ...

  7. 01移动端布局基础之流式布局

    技术交流QQ群:1027579432,欢迎你的加入! 1.移动端基础 浏览器现状 PC端常见浏览器:360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器等. 移动端常见 ...

  8. android 流失布局,Android使用RecyclerView实现流式布局的注意事项

    纯手打,不喜勿喷 long may the sun shine 众所周知,Android开发中Recycleview的功能十分强大,可以实现各种炫酷的效果,今天我根据最近开发的一个项目简要说下流式布局 ...

  9. 两栏布局,三栏布局,等高布局,流式布局

    读前笑一笑: 我前面一女生平胸,然后我问她哪天你晚上自己回家,被劫色怎么办-? 她淡淡的回了句:"我就脱了上衣,然后说,别激动,是自己人"--自己人--己人-人- 两栏布局: 1. ...

最新文章

  1. B - Paint The Wall HDU - 4391[分块hash+tag标记]
  2. 用apxs来扩增apache的模块
  3. C#访问SQLite完整增删改查代码
  4. 什么是编译器?(程序是怎么跑起来的)
  5. php分享网ecshop二次开发视频教程,ecshop二次开发--视频上传
  6. Java深圳工作面试经历(真实经历)!!!
  7. 【零基础玩转BLDC系列】基于霍尔传感器的无刷直流电机控制原理
  8. 温度反转效应(文末附2018数字IC后端最新校招笔试题目)
  9. Android DocumentFile基本使用
  10. 原生JS记忆翻牌小游戏
  11. 【京东】商品评价数据采集+买家评论数据+卖家评论数据采集+行业数据分析+行业数据质检分析
  12. SteamVR 2.x手部模型、控制器的替换(12)
  13. 输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
  14. Android中Webview显示全屏拉伸图片
  15. Java实现文件批量导入导出实例(兼容xls,xlsx)
  16. 高阳:我是黑客我怕谁
  17. 做股票短线操作技巧 股票做超短线操作技巧
  18. 网易我的世界服务器清除TNT,以及圈地领地,命令方块使用
  19. pythonif多个条件同时满足_Python if有多个条件怎么办
  20. 2020年最值得关注的5个logo设计趋势:简单的几何形状logo

热门文章

  1. 履历表范例(电脑程序员)
  2. Datagrid组件的基本讲解
  3. 正确使用mybatis游标
  4. 三大方案解决了Intellij IDEA 2017/2018.1.5 输入法 不跟随
  5. 实用!开关电源分类及开关电源测试解决方案
  6. echarts 之常用的属性配置
  7. MySql数据库导出表结构
  8. c语言 float 取反,c语言中FLOAT是如何表示.doc
  9. 啥是佩奇?用Python画给你看!
  10. oledb mysql_oledb方式连接mysql5 ado连接MySQL[未验证]