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

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

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




的,如果我们愿意深入地研究,可以从SUN 公司的在线文档中获取更多的资料。  



13。19。1 Swing 有哪些优点  



当我们开始使用Swing 库时,会注意到它在技术上向前迈出了巨大的一步。Swing 组件是 Bean ,因此他们可 

以支持Bean 的任何开发环境中使用。Swing 提供了一个完全的UI 组件集合。因为速度的关系,所有的组件 

都很小巧的(没有“重量级”组件被使用),Swing 为了轻便在 Java 中整个被编写。  

最重要的是我们会希望 Swing 被称为“正交使用”;一旦我们采用了这种关于库的普遍的办法我们就可以在 

任何地方应用它们。这主要是因为 Bean 的命名规则,大多数的时候在我编写这些程序例子时我可以猜到方法 

名并且第一次就将它拼写正确而无需查找任何事物。这无疑是优秀库设计的品质证明。另外,我们可以广泛 

地插入组件到其它的组件中并且事件会正常地工作。  

键盘操作是自动被支持的——我们可以使用 Swing 应用程序而不需要鼠标,但我们不得不做一些额外的编程 

工作(老的 AWT 中需要一些可怕的代码以支持键盘操作)。滚动被毫不费力地支持——我们简单地将我们的 

组件到一个 JScrollPane 中,同样我们再增加它到我们的窗体中即可。其它的特征,例如工具提示条只需要 

一行单独的代码就可执行。  

Swing 同样支持一些被称为“可插入外观和效果”的事物,这就是说UI 的外观可以在不同的平台和不同的操 

作系统上被动态地改变以符合用户的期望。它甚至可以创造我们自己的外观和效果。  



13。19。2 方便的转换  



如果我们长期艰苦不懈地利用 Java 1。1 版构建我们的UI,我们并不需要扔掉它改变到Swing 阵营中来。幸 

运的是,库被设计得允许容易地修改——在很多情况下我们可以简单地放一个“J”到我们老AWT 组件的每个 

类名前面即可。下面这个例子拥有我们所熟悉的特色:  

  

//: JButtonDemo。java  

// Looks like Java 1。1 but with J's added  

package c13。swing;  

import java。awt。*;  

import java。awt。event。*;  

import java。applet。*;  

import javax。swing。*;  

  

public class JButtonDemo extends Applet {  



                                                                        467 


…………………………………………………………Page 469……………………………………………………………

  JButton   

    b1 = new JButton(〃JButton 1〃);  

    b2 = new JButton(〃JButton 2〃);  

  JTextField t = new JTextField(20);  

  public void init() {  

    ActionListener al = new ActionListener() {  

      public void actionPerformed(ActionEvent e){  

        String name =   

          ((JButton)e。getSource())。getText();  

        t。setText(name + 〃 Pressed〃);  

      }  

    };  

    b1。addActionListener(al);  

    add(b1);  

    b2。addActionListener(al);  

    add(b2);  

    add(t);  

  }  

  public static void main(String args'') {  

    JButtonDemo applet = new JButtonDemo();  

    JFrame frame = new JFrame(〃TextAreaNew〃);  

    frame。addWindowListener(new WindowAdapter() {  

      public void windowClosing(WindowEvent e){  

        System。exit(0);  

      }  

    });  

    frame。getContentPane()。add(  

      applet; BorderLayout。CENTER);  

    frame。setSize(300;100);  

    applet。init();  

    applet。start();  

    frame。setVisible(true);  

  }  

} ///:~  

  

这是一个新的输入语句,但此外任何事物除了增加了一些“J”外,看起都像这 Java 1。1 版的AWT。同样, 

我们不恰当的用add()方法增加到 Swing JFrame 中,除此之外我们必须像上面看到的一样先准备一些 

 “content pane”。我们可以容易地得到Swing 一个简单的改变所带来的好处。  

因为程序中的封装语句,我们不得不调用像下面所写的一样调用这个程序:  

java c13。swing。JbuttonDemo  

在这一节里出现的所有的程序都将需要一个相同的窗体来运行它们。  



13。19。3 显示框架  



尽管程序片和应用程序都可以变得很重要,但如果在任何地方都使用它们就会变得混乱和毫无用处。这一节 

余下部分取代它们的是一个Swing 程序例子的显示框架:  

  

//: Show。java  

// Tool for displaying Swing demos  

package c13。swing;  

import java。awt。*;  

import java。awt。event。*;  

import javax。swing。*;  



                                                                                          468 


…………………………………………………………Page 470……………………………………………………………

  

public class Show {  

  public static void   

  inFrame(JPanel jp; int width; int height) {  

    String title = jp。getClass()。toString();  

    // Remove the word 〃class〃:  

    if(title。indexOf(〃class〃) != …1)  

      title = title。substring(6);  

    JFrame frame = new JFrame(title);  

    frame。addWindowListener(new WindowAdapter() {  

      public void windowClosing(WindowEvent e){  

        System。exit(0);  

      }  

    });  

    frame。getContentPane()。add(  

      jp; BorderLayout。CENTER);  

    frame。setSize(width; height);  

    frame。setVisible(true);  

  }  

} ///:~  

  

那些想显示它们自己的类将从 JPanel 处继承并且随后为它们自己增加一些可视化的组件。最后,它们创建一 

个包含下面这一行程序的main():  

Show。inFrame(new MyClass(); 500; 300);  

最后的两个自变量是显示的宽度和高度。  

注意JFrame 的标题是用 RTTI 产生的。  



13。19。4 工具提示  



几乎所有我们利用来创建我们用户接口的来自于Jponent 的类都包含一个称为setToolTipText(string) 

的方法。因此,几乎任何我们所需要表示的(对于一个对象jc 来说就是一些来自Jponent 的类)都可以 

安放在窗体中:  

jc。setToolTipText(〃My tip〃);  

并且当鼠标停在Jponent 上一个超过预先设置的一个时间,一个包含我们的文字的小框就会从鼠标下弹 

出。  



13。19。5 边框  



Jponent 同样包括一个称为 setBorder()的方法,该方法允许我们安放一些各种各样有趣的边框到一些可 

见的组件上。下面的程序例子利用一个创建JPanel 并安放边框到每个例子中的被称为 showBorder()的方 

法,示范了一些有用的不同的边框。同样,它也使用RTTI 来找我们使用的边框名(剔除所有的路径信息), 

然后将边框名放到面板中间的 JLable 里:  

  

//: Borders。java  

// Different Swing borders  

package c13。swing;  

import java。awt。*;  

import java。awt。event。*;  

import javax。swing。*;  

import javax。swing。border。*;  

  

public class Borders extends JPanel {  

  static JPanel showBorder(Border b) {  



                                                                                          469 


…………………………………………………………Page 471……………………………………………………………

    JPanel jp = new JPanel();  

    jp。setLayout(new BorderLayout());  

    String nm = b。getClass()。toString();  

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