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

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

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




    System。out。println(e);  

    if(e。getID() == WindowEvent。WINDOW_CLOSING) {  

      System。out。println (〃Window Closing〃);  

      System。exit(0);  

    }  

  }  

  public static void main(String'' args) {  

    Frame f = new BadTechnique();  

    f。setTitle(〃Bad Technique〃);  

    f。setSize(700;700);  

    f。setVisible(true);  

  }  

} ///:~  

  

的确,它能够工作。但却实在太蹩脚,而且很难编写、阅读、调试、维护以及再生。既然如此,为什么还不 

使用内部接收器类呢?  



13。17 Java 1。1 用户接口 API   



Java 1。1 版同样增加了一些重要的新功能,包括焦点遍历,桌面色彩访问,打印“沙箱内”及早期的剪贴板 

支持。  

焦点遍历十分的简单,因为它显然存在于AWT 库里的组件并且我们不必为使它工作而去做任何事。如果我们 

制造我们自己组件并且想使它们去处理焦点遍历,我们过载 isFocusTraversable()以使它返回真值。如果我 

们想在一个鼠标单击上捕捉键盘焦点,我们可以捕捉鼠标按下事件并且调用requestFocus()需求焦点方法。  



13。17。1 桌面颜色  



利用桌面颜色,我们可知道当前用户桌面都有哪些颜色选择。这样一来,就可在必要的时候通过自己的程序 

来运用那些颜色。颜色都会得以自动初始化,并置于SystemColor 的static 成员中,所以要做的唯一事情就 

是读取自己感兴趣的成员。各种名字的意义是不言而喻的:desktop,activeCaption,  

activeCaptionText,activeCaptionBorder, inactiveCapt ion, inactiveCaptionText, 

inactiveCaptionBorder, window, windowBorder , windowText, menu,menuText,text, textText,  

textHighlight, textHighlightText ,textInactiveText,control, controlText, controlHighlight, 

controlLtHighlight,controlShadow ,controlDkShadow, scrollbar, info (用于帮助)以及infoText 

 (用于帮助文字)。  



13。17。2 打印  



非常不幸,打印时没有多少事情是可以自动进行的。相反,为完成打印,我们必须经历大量机械的、非 OO 

 (面向对象)的步骤。但打印一个图形化的组件时,可能多少有点儿自动化的意思:默认情况下,print()方 

法会调用paint()来完成自己的工作。大多数时候这都已经足够了,但假如还想做一些特别的事情,就必须 



                                                                                         448 


…………………………………………………………Page 450……………………………………………………………

知道页面的几何尺寸。  

下面这个例子同时演示了文字和图形的打印,以及打印图形时可以采取的不同方法。此外,它也对打印支持 

进行了测试:  

  

//: PrintDemo。java  

// Printing with Java 1。1  

import java。awt。*;  

import java。awt。event。*;  

  

public class PrintDemo extends Frame {  

  Button   

    printText = new Button(〃Print Text〃);  

    printGraphics = new Button(〃Print Graphics〃);  

  TextField ringNum = new TextField(3);  

  Choice faces = new Choice();  

  Graphics g = null;  

  Plot plot = new Plot3(); // Try different plots  

  Toolkit tk = Toolkit。getDefaultToolkit();  

  public PrintDemo() {  

    ringNum。setText(〃3〃);  

    ringNum。addTextListener(new RingL());  

    Panel p = new Panel();  

    p。setLayout(new FlowLayout());  

    printText。addActionListener(new TBL());  

    p。add(printText);  

    p。add(new Label(〃Font:〃));  

    p。add(faces);  

    printGraphics。addActionListener(new GBL());  

    p。add(printGraphics);  

    p。add(new Label(〃Rings:〃));  

    p。add(ringNum);  

    setLayout(new BorderLayout());  

    add(p; BorderLayout。NORTH);  

    add(plot; BorderLayout。CENTER);  

    String'' fontList = tk。getFontList();  

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

      faces。add(fontList'i');  

    faces。select(〃Serif〃);  

  }  

  class PrintData {  

    public PrintJob pj;  

    public int pageWidth; pageHeight;  

    PrintData(String jobName) {  

      pj = getToolkit()。getPrintJob(  

        PrintDemo。this; jobName; null);  

      if(pj != null) {  

        pageWidth = pj。getPageDimension()。width;  

        pageHeight= pj。getPageDimension()。height;  

        g = pj。getGraphics();  

      }  

    }  

    void end() { pj。end(); }  



                                                                                          449 


…………………………………………………………Page 451……………………………………………………………

  }  

  class ChangeFont {  

    private int stringHeight;  

    ChangeFont(String face; int style;int point){  

      if(g != null) {  

        g。setFont(new Font(face; style; point));  

        stringHeight =   

          g。getFontMetrics()。getHeight();  

      }  

    }  

    int stringWidth(String s) {  

      return g。getFontMetrics()。stringWidth(s);  

    }  

    int stringHeight() { return stringHeight; }  

  }  

  class TBL implements ActionListener {  

    public void actionPerformed(ActionEvent e) {  

      PrintData pd =   

        new PrintData(〃Print Text Test〃);  

      // Null means print job canceled:  

      if (pd == null) return;  

      String s = 〃PrintDemo〃;  

      ChangeFont cf = new ChangeFont(  

        faces。getSelectedItem(); Font。ITALIC;72);  

      g。drawString(s;   

        (pd。pageWidth cf。stringWidth(s)) / 2;  

        (pd。pageHeight cf。stringHeight()) / 3);  

  

      s = 〃A smaller point size〃;  

      cf = new ChangeFont(  

        faces。getSelectedItem(); Font。BOLD; 48);  

      g。drawString(s;   

        (pd。pageWidth cf。stringWidth(s)) / 2;  

        (int)((pd。pageHeight   

           cf。stringHeight())/1。5));  

      g。dispose();  

      pd。end();  

    }  

  }  

  class GBL implements ActionListener {  

    public void actionPerformed(ActionEvent e) {  

      PrintData pd =   

        new PrintData(〃Print Graphics Test〃);  

      if(pd == null) return;  

      plot。print(g);  

      g。dispose();  

      pd。end();  

    }  

  }  

  class RingL implements TextListener {  

    public void textValueChanged(TextEvent e) {  

      int i = 1;  



                                                                                          450 


…………………………………………………………Page 452……………………………………………………………

      try {  

        i = Integer。parseInt(ringNum。getText());  

      } catch(NumberFormatException ex) {  

         i = 1;  

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