友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

Java编程思想第4版[中文版](PDF格式)-第186章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




        public void windowClosing(WindowEvent e) {  

          System。exit(0);  

        }  

      });  

    aFrame。add(applet; BorderLayout。CENTER);  

    aFrame。setSize(300;200);  

    applet。init();  

    applet。start();  

    aFrame。setVisible(true);  

  }  

} ///:~  

  

ILCheck拥有当我们增加或者减少复选框时自动调整的优点。当然,我们对单选钮使用这种方法也同样的 

好。但是,它仅当我们的逻辑足以普遍的支持这种方法时才会被使用。如果声明一个确定的信号——我们将 

重复利用独立的接收器类,否则我们将结束一串条件语句。  

  

4。 下拉列表  

下拉列表在 Java 1。1 版中当一个选择被改变时同样使用 ItemListener去告知我们:  

  

//: ChoiceNew。java  

// Drop…down lists with Java 1。1  

import java。awt。*;  

import java。awt。event。*;  

import java。applet。*;  

  

public class ChoiceNew extends Applet {  

  String'' description = { 〃Ebullient〃; 〃Obtuse〃;  

    〃Recalcitrant〃; 〃Brilliant〃; 〃Somnescent〃;  

    〃Timorous〃; 〃Florid〃; 〃Putrescent〃 };  



                                                                                          421 


…………………………………………………………Page 423……………………………………………………………

  TextField t = new TextField(100);  

  Choice c = new Choice();  

  Button b = new Button(〃Add items〃);  

  int count = 0;  

  public void init() {  

    t。setEditable(false);  

    for(int i = 0; i 《 4; i++)  

      c。addItem(description'count++');  

    add(t);  

    add(c);  

    add(b);  

    c。addItemListener(new CL());  

    b。addActionListener(new BL());  

  }  

  class CL implements ItemListener {  

    public void itemStateChanged(ItemEvent e) {  

      t。setText(〃index: 〃 +  c。getSelectedIndex()  

        + 〃   〃 + e。toString());  

    }  

  }  

  class BL implements ActionListener {  

    public void actionPerformed(ActionEvent e) {  

      if(count 《 description。length)  

        c。addItem(description'count++');  

    }  

  }  

  public static void main(String'' args) {  

    ChoiceNew applet = new ChoiceNew();  

    Frame aFrame = new Frame(〃ChoiceNew〃);  

    aFrame。addWindowListener(  

      new WindowAdapter() {  

        public void windowClosing(WindowEvent e) {  

          System。exit(0);  

        }  

      });  

    aFrame。add(applet; BorderLayout。CENTER);  

    aFrame。setSize(750;100);  

    applet。init();  

    applet。start();  

    aFrame。setVisible(true);  

  }  

} ///:~  

  

这个程序中没什么特别新颖的东西(除了 Java 1。1 版的UI 类里少数几个值得关注的缺陷)。  

  

5。 列表  

我们消除了 Java 1。0 中List 设计的一个缺陷,就是 List 不能像我们希望的那样工作:它会与单击在一个列 

表元素上发生冲突。  

  

//: ListNew。java  

// Java 1。1 Lists are easier to use  

import java。awt。*;  



                                                                                          422 


…………………………………………………………Page 424……………………………………………………………

import java。awt。event。*;  

import java。applet。*;  

  

public class ListNew extends Applet {  

  String'' flavors = { 〃Chocolate〃; 〃Strawberry〃;  

    〃Vanilla Fudge Swirl〃; 〃Mint Chip〃;   

    〃Mocha Almond Fudge〃; 〃Rum Raisin〃;   

    〃Praline Cream〃; 〃Mud Pie〃 };  

  // Show 6 items; allow multiple selection:  

  List lst = new List(6; true);  

  TextArea t = new TextArea(flavors。length; 30);  

  Button b = new Button(〃test〃);  

  int count = 0;  

  public void init() {  

    t。setEditable(false);  

    for(int i = 0; i 《 4; i++)  

      lst。addItem(flavors'count++');  

    add(t);  

    add(lst);  

    add(b);  

    lst。addItemListener(new LL());  

    b。addActionListener(new BL());  

  }  

  class LL implements ItemListener {  

    public void itemStateChanged(ItemEvent e) {  

      t。setText(〃〃);  

      String'' items = lst。getSelectedItems();  

      for(int i = 0; i 《 items。length; i++)  

        t。append(items'i' + 〃n〃);  

    }  

  }  

  class BL implements ActionListener {  

    public void actionPerformed(ActionEvent e) {  

      if(count 《 flavors。length)  

        lst。addItem(flavors'count++'; 0);  

    }  

  }  

  public static void main(String'' args) {  

    ListNew applet = new ListNew();  

    Frame aFrame = new Frame(〃ListNew〃);  

    aFrame。addWindowListener(  

      new WindowAdapter() {  

        public void windowClosing(WindowEvent e) {  

          System。exit(0);  

        }  

      });  

    aFrame。add(applet; BorderLayout。CENTER);  

    aFrame。setSize(300;200);  

    applet。init();  

    applet。start();  

    aFrame。setVisible(true);  

  }  



                                                                                          423 


…………………………………………………………Page 425……………………………………………………………

} ///:~  

  

我们可以注意到在列表项中无需特别的逻辑需要去支持一个单击动作。我们正好像我们在其它地方所做的那 

样附加上一个接收器。  

  

6。 菜单  

为菜单处理事件看起来受益于 Java 1。1 版的事件模型,但 Java 生成菜单的方法常常麻烦并且需要一些手工 

编写代码。生成菜单的正确方法看起来像资源而不是一些代码。请牢牢记住编程工具会广泛地为我们处理创 

建的菜单,因此这可以减少我们的痛苦(只要它们会同样处理维护任务!)。另外,我们将发现菜单不支持 

并且将导致混乱的事件:菜单项使用ActionListeners (动作接收器),但复选框菜单项使用 ItemListeners 

 (项目接收器)。菜单对象同样能支持ActionListeners (动作接收器),但通常不那么有用。一般来说, 

我们会附加接收器到每个菜单项或复选框菜单项,但下面的例子(对先前例子的修改)演示了一个联合捕捉 

多个菜单组件到一个单独的接收器类的方法。正像我们将看到的,它或许不值得为这而激烈地争论。  

  

//: MenuNew。java  

// Menus in Java 1。1  

import java。awt。*;  

import java。awt。event。*;  

  

public class MenuNew extends Frame {  

  String'' flavors = { 〃Chocolate〃; 〃Strawberry〃;  

    〃Vanilla Fudge Swirl〃; 〃Mint Chip〃;   

    〃Mocha Almond Fudge〃; 〃Rum Raisin〃;   

    〃Praline Cream〃; 〃Mud Pie〃 };  

  TextField t = new TextField(〃No flavor〃; 30);  

  MenuBar mb1 = new MenuBar();  

  Menu f = new Menu
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!