LWUIT精简解说 21 []
Sun发布了LWUIT(Light-Weight UI Toolkit)的源代码以及示例代码。项目主页访问:lwuit.dev.java/
  The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, 字体, 触摸屏, 动画效果, Rich控件, 3D集成, Painter, 模式对画框, I18N/L10N等。
      学习Lwuit时,一些基础知识是一定要掌握的,以下是一些基本应用,包括组件的一些基本属性,使用方式,以及布局,并提及一些需要注意的地方。
在MIDlet中初始化Lwuit 也是唯一使用原有J2me的东西
      可以在startApp方法中定义启动的过程
checkbox和radiobutton的区别        public void startApp() {
            //init the LWUIT Display
            Display.init(this);
            //加载资源文件
      try {
      Resources r = Resources.open("/s");
      Instance().Theme(
      r.getThemeResourceNames()[0])
      ); }
      catch (java.io.IOException e) {
      }
简单的使用一个内置Form进行显示,而无须使用一个而外的类
  Form f = new Form();
  f.setTitle("Hello World");
  f.setLayout(new BorderLayout());
  f.addComponent("Center", new Label("I am a Label"));
  f.show();
  注意使用show方法进行显示
组件介绍
关于组件的使用,我一共列出了21条:
1。Component,Container,Form
2。Label
3。Button
4。RadioButton,ButtonGroup,CheckBox,ComboBox
5。TextArea
6。TabbedPane
7。 使用 Lists
8。ListCellRenderer 渲染器
9。使用 Dialogs 对话框
10。使用LayoutManagers 使用布局管理器(BorderLayout,BoxLayout,FlowLayout,GridLayout,GroupLayout)
11。使用 Painter
12。Using the Style Object 设置样式对象
13。Theming 皮肤
14。Resources 资源
15。Localization (L10N) 本地化
16。M3G 用于实现3D功能,需要手机的支持 Jsr184
17。Logging 日志,可以保存在RMS或者本地文件中
18。创建自定义的组件,只要继承Component对象,然后重写paint方法即可,类似Canvas的操作
19。用于在窗口变化时候获取合适的显示效果
20。影响内存使用的因素
21。Speed 速度方面 
1。Component,Container,Form
      Component 用于显示到页面上的基础部分,可以理解为DisplayObject,也就是组件部分 
      Container 用于保存多个Components的容器类型,提供了布局的能力
      Form : 提供title和menus,并且提供一个content放置Components,并且提供了content的滚动能力,addComponent,用于添加Components到Content中
•提供的一些方法和使用方式 
      Form mainForm = new Form("Form Title");  //声明一个带标题的Form
      mainForm.setLayout(new BorderLayout()); //设置布局管理器
      mainForm.addComponent(BorderLayout.CENTER, new Label(“Hello,World”)); //添加Components组件,
      mainForm.ateFade(400)); //设置动画
      mainForm.addCommand(new Command("Run", 2)); //添加菜单命令
      mainForm.show(); //显示Form
•一些技巧 
      1:可以使用带参数的构造函数,设置标题.也可以不设置标题的构造函数
      2:addComponent() 方法提供两个重载,区别在于是否指定布局位置
      3:Transition动画用于在forms之间进行切换时候触发
      4:Form通过Commands添加菜单,根据添加顺序排序显示,其他使用与普通的J2me一样 
2。Label
      Label: 可以同时显示图片和文字,设置align布局,可以通过继承Label实现扩展,如果更复杂,可以使用Button
• 提供的一些方法和使用方式 
      Label textLabel = new Label("I am a Label");  //创建一个单行文本
      Image icon = ateImage("/images/duke.png");
      Label imageLabel = new Label(icon);  //创建一个带图片的Label
      setTextPosition(int alignment); //设置布局方式,CENTER, LEFT, RIGHT,LEFT,TOP, BOTTOM, LEFT, RIGHT, 
3。Button
      Button 可以用于触发一个点击的事件Action,使用一个ActionListeners 进行监听
      final Button button  = new Button("Old Text"); 
        //使用匿名的ActionListener接口实现类进行监听
      button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
      button.setText("New Text");
      }});
      Button继承Label, 所以可以设置不同图文混编的风格,并且提供了三种状态ollover, pressed, and the default state
4。RadioButton,ButtonGroup,CheckBox,ComboBox
•RadioButton  单选按钮,继承自Button 
      RadioButton radioButton = new RadioButton(“Radio Button”);
      同样,也会触发action
• ButtonGroup 用于保证RadioButton只能选中一项 
      RadioButton rb1 = new RadioButton("First RadioButton in Group 1");
      RadioButton rb2 = new
RadioButton("Second RadioButton in Group 1");
      ButtonGroup group1 = new ButtonGroup();
      group1.add(rb1);
      group1.add(rb2);
      exampleContainer.addComponent(rb1);
      exampleContainer.addComponent(rb2);
      这里需要注意,只需要添加addComponent(RadioButton) 到容器中,不需要添加ButtonGroup,只用于后台管理
• CheckBox  多选框,不需要添加到group中,同样也触发事件 
      final CheckBox checkBox = new CheckBox(“Check Box”);
      通过checkBox.isSelected() 判断是否被选中
• ComboBox  列表,只允许一个被选中,多用于空间有限时候提供多选项的单选功能 
      创建需要一个数组作为数据源
      String[] content = { "Red", "Blue", "Green", "Yellow" };
      ComboBox comboBox = new ComboBox(content); //创建一个Combox,在这个构造函数中也是使用List实现
      comboBox.setListCellRenderer(new checkBoxRenderer()); //设置renderer 渲染器
      也可以使用addActionListener注册事件
      通过实现不同的renderer接口可以给组件提供不同的显示效果 implements ListCellRenderer
5。TextArea 
•例子 
      TextArea textArea = new TextArea(5, 20, TextArea.NUMERIC);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。