LWUIT_1_2_1学习文档中文版(2).doc_第1页
LWUIT_1_2_1学习文档中文版(2).doc_第2页
LWUIT_1_2_1学习文档中文版(2).doc_第3页
LWUIT_1_2_1学习文档中文版(2).doc_第4页
LWUIT_1_2_1学习文档中文版(2).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LWUIT_1_2_4学习文档中文版(2)胡鹰第五章 使用Layout Managers5.1 BorderLayout 这种布局是把屏幕分成了5个区域:东、西、南、北、中;当向一个容器中添加组件的时候,使用addComponent()方法,这个组件的位置就是这个方法里面的第一个参数。不能有其他的组件位于同一个位置区域里面。addComponent(BorderLayout.CENTER, component) / preferredoraddComponent(“Center”, component) / valid but error prone 中间部分是有尽量大的空间的,其他部分的空间会自动的适应添加在其中的控件的大小。一般情况下一个容器只用一到两个部分,比如中间部分或是中间部分加上下面部分。5.2 BoxLayout 这种布局方式是把放在容器里面的控件按照要么是横着放或是竖着放,而且都只有一行或是一列。BoxLayout boxLayout = new BoxLayout(BoxLayout.X_AXIS);横着放到时候,控件的高度是决定于容器的高度的;竖着放时候,控件的宽度是决定于容器的宽度的。BoxLayout boxLayout = new BoxLayout(BoxLayout.Y_AXIS); 5.3 FlowLayout 这是容器的默认布局方式。这种方式下,横着放,控件的大小按照它们原来的大小;如果一行放不下了,就起第二行放。而且还可以控制他们的位置为left、right、center。FlowLayout exampleLayout = new FlowLayout();.container.setLayout(exampleLayout);container.addComponent(new Button(Button 1);container.addComponent(new Button(Button 2);container.addComponent(new Button(Button 3);container.addComponent(new Button(Button 4);如果改第一个语句:FlowLayout exampleLayout = new FlowLayout(Component.RIGHT);则:5.4 GridLayout这个布局方式也是十分常见的和常用的,特别是我们在做九宫格的时候,就要用到这样的布局方式。GridLayout exampleLayout = new GridLayout(0,2);.container.setLayout(exampleLayout);container.addComponent(new Button(Button 1);container.addComponent(new Button(Button 2);container.addComponent(new Button(Button 3);container.addComponent(new Button(Button 4);5.5 GroupLayout 这种布局方式是为了开发GUI的开发者设计的,我们一般很少用到,这里不做叙述。第六章 使用PainterPainter是一个可以在组件的背景上面进行绘画的接口。Painter自己先把自己画出来,之后这个组件再把自己画出来,之后再把二者绑定在一起。使用Painter的最大好处就是你可以用代码来控制组件的背景。比如说使用漂亮的图片来做背景。现在,假如你要在一个组件背景上画一条线,你可以重复使用这个Painter.Painter diagonalPainter = new Painter() public void paint(Graphics g, Rectangle rect) g.drawLine(rect.getX(),rect.getY(),rect.getX() + rect.getSize().getWidth(),rect.getY() + rect.getSize().getHeight();/设置一个组件的背景上画笔myComponent.getStyle().setBgPainter(diagonalPainter);/下面是设置一些组件Label myLabel = new Label(Image.createImage(/images/duke.png);myLabel.setAlignment(Component.CENTER);myLabel.getStyle().setBgTransparency(100);myLabel.getStyle().setBgPainter(diagonalPainter);.Button myButton = new Button(Image and Text Button);myButton.setIcon(Image.createImage(/images/duke.png);myButton.setAlignment(Component.CENTER);myButton.getStyle().setBgTransparency(100);myButton.getStyle().setBgPainter(diagonalPainter);.RadioButton myRadioButton = new RadioButton(RadioButton);myRadioButton.getStyle().setBgTransparency(100);myRadioButton.getStyle().setBgPainter(diagonalPainter);得到的图形是这样的:第七章 使用Style Object Style Object可以设置colors,fonts,transparency,margin,padding,images,borders等属性。每一个组件都包含有两个方法来在运行时改变该组件的风格:component.getSelectedStyle()和component.getUnselectedStyle()。风格也可以应用于主题之中,当主题改变的时候,风格也相应的随着改变。7.1 Color 每一个组件都有两个可以调节的color: Foreground color和Background color。颜色的调节值是以RGB来代表的,这时候是没有透明度通道的,或者说这时候的透明度要另外设定的。颜色的可用值范围是0x000000到0xffffff(黑到白),也可以用十进制的数字表示(0255)。7.2 Font Font要使用Font Object来设定。LWUIT可以使用Bitmap字体也可以使用本地系统的字体。7.3 透明度(Transparency)LWUIT支持背景的透明度设置。使用setBgTransparency()函数来设置即可。参数的范围为0255.7.4 Margin and Padding 什么意思呢?就是说可以设定一个组件中的边框和它的相邻的组件之间的距离或是这个组件的边框和它内部的其他控件之间的边框的距离。这是通过一个类似于CSS的盒子模型来实现的。这于网页设计中的这两个属性是一样的道理。请参看下面的图形:相关的设置语句如下:/ Setting padding with positive valuessetPadding(int top, int bottom, int left, int right)/ orientation can be Component.TOP, BOTTOM, LEFT or RIGHTsetPadding(int orientation, int gap)/ Setting margin with positive valuessetMargin(int top, int bottom, int left, int right)/ orientation can be Component.TOP, BOTTOM, LEFT or RIGHTsetMargin(int orientation, int gap)说明:orientation代表的是设定的只是其中的一个方向的属性,而其他方向的属性是默认的值7.5 Images在Style里面,Images代表的是与组件相关的背景图片。默认的组件是没有背景图片的,更多资料请参看上一个章节。7.6 边线(Borders)Style支持设定用户自己的风格的边线。Borders可以是背景画笔画出来的,也可以是图片边线。边线可以通过相应的方法进行设定,具体请参看应用文档。7.7 Style Listener它可以使你监听到风格发生的变化。比如你想监听背景颜色发生的变化,同时就可以用程序去动态的改变这些风格。下面的代码展示了如何添加风格监听器和做出相应的改变:myComponent.getStyle().addStyleListener(new StyleListener() public void styleChanged(String propertyName, Style source) if (propertyName.equals(Style.FONT) System.out.println(Font of myComponent got changed.););7.8 Painters Painter是用来画组件的背景的。Painter先自己把自己画出来,然后,组件再把自己显示在它的上方,两者进行重叠显示。使用setBgPainter()方法可以设定画笔。看下面的代码: mycomponent.getStyle().setBgPainter(myPainter);第八章 主题(Theming)8.1 基本主题Lwuit支持类似于CSS的主题,同时,这种主题比Swing中的Look And Feel要简单。每一个主题都有自己的风格,这样主题可以被人为的多样化,也可以被用户自己进行设定。比如要使所有的按钮的背景都变成红色,那么你可以使用下面的这条语句:Button.bgColor=ff0000一个主题可以被打包进一个资源文件(下一章会介绍),而且这个资源文件可以在程序运行的时候被加载到程序中。为了更行主题,你必须在改变主题后对根组件进行刷新,这里说的根组件是指Form/Dialog等容器组件,使用的方法是refreshTheme().同一个主题中,同一类组件的外在表现是一样的,除非你在程序中人为的改动以某一个特别的组件的外观。一个主题的文件与一个CSS文件十分相似,它十分的简单,而且与JAVA的特别文件十分相似,还是结构化的。一个主题文件中是以key-value对的形式出现的,key和css中的选择器十分相似,如Button.font。key是可以由固定的组件ID(UID)和一个该组件下的属性组成的。与CSS不同的是,主题不支持复杂的继承关系和复杂的组合选择器。UID可以是下面的这些:Button, Label, CheckBox, RadioButton, Form,等等。属性列表如下:要安装一个主题,你必须要加载一个资源文件,你要更改当前的主题中的内容,可以使用setThemeProps()方法。8.2 Look and Feel 主题虽然功能强大,也比较简单,但是它不允许用户深层次的根据程序的需要控制外观。开发者通常期望能在单独的区域中去画自己随心所欲的控件。LWUIT提供了一个基本的虚类叫做LookAndFeel,它是一个UIManger的实例,提供了一个默认的LWUIT外观DefaultLookAndFeel. 这个类具有画所有组件的能力,另外,它还具有特殊的方法,允许你绑定特定的组件而且人为的画如滚动条类似的控件。更多资料请参看API文档。第九章 资源 LWUIT允许一下种类的资源: Image Resources Dynamic Fonts Localization(L10N)bundles Themes资源可以被转换成二进制文件,这种文件是一种可以被下载到设备上直接使用的文件。一个二进制文件可以联合不同种类的资源,LWUIT提供了两种方法来创建这种二进制的资源文件。9.2 资源元素9.2.1 建立一个二进制文件 一个资源的二进制文件可以在一个标准的应用程序的创建过程中使用Ant来创建,一个应用程序文件可以有不同种类的资源文件。 一个资源文件会被完全加载到内存中,因此,你必须把要用到的资源文件进行分类,这样的话,就可以使应用程序只加载需要用到的资源文件而不必占用太多的内存。9.2.1.1 建立一个资源 可以使用下面类似的代码: 你可以添加其他类型的资源到这个监理标签下面。9.2.1.2 加载一个资源 Resources res = Resources.open(“/myresourceFile.res”);Image i = res.getImage(“imageName”);9.2.2 图片资源 在LWUIT中支持几种类型的图片。要把一个图片加载进来,使用下面的代码: Image image = Image.createImage(/images/duke.png); 它有下面的几种属性: 一旦加载,那么这个图片就可以用做组件的背景或是icon等。9.2.3 Indexed Images图片在运行时中会占据大量的内存,比如一个背景图片(320x240)的,在1.6万色的时候,就会占据320x240x4bytes=300KB的内存。有的设备自由2MB的RAM分配给Java。为了解决这个问题,就使用了Indexed Images。不把Image描述成为Alpha,Red,Green,Blue的形式,Indexed Images 依靠的是不多于256色的机制(如果有多余256的,则会被Ant减少下来,这样会影响图片质量)。一个256色的图片可以用一个数组来表示,256x4=1KB,减少了原来的70%。例如:假如上面的图片使用的是256色的,那么占据的大小为320x240+1024=77824b=76KB.9.2.4 Fonts9.2.4.1 System Font 9.2.4.2 Dynamic Fonts 不同的平台支持不同的字体,LWUIT支持定义字体,而且支持不同设备上的资源更新。9.2.5 Localization (L10N) 资源的二进制文件允许L10N资源,它允许开发者存储key-value对到资源文件里面去。The lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论