Java读书笔记10 图形程序设计基础

  《JAVA 2核心技术 卷Ⅰ》第七章:图形程序设计,读书笔记,第一部分(7.1-7.5)。

  主要内容包括了:Swing概述、创建框架、框架定位等基本方法列表、在面板中显示文字信息的方法及程序、Java 2D库的基础部分介绍。

一.Swing概述

  在Java 1.0刚出现的时候,包含了一个用于基本GUI程序设计的类库,Sun将它称为抽象窗口工具箱(Abstract Window Toolkit, AWT)。基本AWT库采用将处理用户界面元素的任务委派给每个目标平台的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面元素的创建和动作。例如,如果使用最初的AWT在Java窗口中放置一个文本框,就会有一个底层的“对等体”文本框,用它来实际地处理文本输入。

  1996年,Netscape创建了一种称为IFC(Internet Foundation Class)的GUI库,它采用了与AWT完全不同的工作方式。它将按钮、菜单这样的用户界面元素绘制在空白窗口上,而对等体只需要创建和绘制窗口。Sun与Netscape合作完善了这种方式,创建了一个名为Swing的用户界面库。

  现在,Swing是不对等基于GUI工具箱的正式名字,它已是Java基础类库(Java Foundation Class, JFC)的一部分。

  Swing没有完全替代AWT,而是基于AWT架构之上。Swing仅仅提供了能力更加强大的用户界面组件。尤其在采用Swing编写的程序中,还需要使用基本的AWT处理事件。

  从现在开始,香港虚拟主机,“Swing”是指“被绘制的”非对等体用户界面类;“AWT”是指像事件处理这样的窗口工具箱的底层机制。

  在程序员编写Swing程序时,可以为程序指定专门的“观感”,如“Metal”观感,它支持多种主题,默认的主题叫“Ocean”。

  绝大多数Java用户界面程序设计都采用Swing,但有一个特别的例外,Eclipse集成开发环境使用了一种与AWT类似,且被称为SWT的图形工具箱,它可以映射到不同平台的本地组件上。

二.创建框架

  在Java中,顶层窗口(没有包含在其他窗口中的窗口)被称为框架(frame)。在AWT中有一个称为Frame的类,用于描述顶层窗口。这个类的Swing版本名为JFrame,它扩展于Frame类。JFrame是极少数几个不绘制在画布上的Swing组件之一。因此,它的修饰部件(按钮、标题、图标等)由用户的窗口系统绘制,而不是由Swing绘制。

下面是一个在屏幕中显示一个空框架的简单程序:

例7-1 SimpleFrameTest

/**@version 1.31 2004-05-03@author Cay Horstmann*/import javax.swing.*;public class SimpleFrameTest{ main(String[] args){SimpleFrame frame = new SimpleFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}class SimpleFrame extends JFrame{public SimpleFrame(){setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);}DEFAULT_WIDTH = 300;DEFAULT_HEIGHT = 200;}

  在默认情况下,框架的大小为0*0像素,定义了一个子类SimpleFrame,将框架的大小设置为300*200像素。

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);定义了用户关闭这个框架时的响应动作,对于这个程序而言,是让程序退出。在默认的情况下,用户关闭窗口时只是将框架隐藏了起来,而程序没有终止。

  简单地构造一个框架并不自动显示出来,框架起初是不可见的,为了显示框架,需要调用setVisible方法。

  然后,main方法退出,退出main并没有终止程序,终止的只是主线程。目前显示的框架激活了用户界面线程,以保持程序处于激活状态。

  程序运行结果,是显示一个小窗口。

三.框架定位

  JFrame类本身只包含若干个改变框架外观的方法,然而,它通过继承从各个超类中继承了许多用于处理框架大小和位置的方法。

  最重要的有下面几个:

    dispose方法用于关闭窗口,并回收创建窗口所使用的全部系统资源。

    setIconImage方法用于将窗口极小化时的图标设置为Image对象(图标化)。

    setTitle方法用于改变标题栏中的文本。

    setResizable方法利用一个boolean值确定框架的大小是否允许用户改变。

  JFrame类 (1.7)()

  可以看到继承关系。下面介绍各个超类中比较常用的功能:

java.awt.Component

方法

功能及说明

boolean isVisible()

检查组件是否设置为可见。组件最初是可见的,但是JFrame这样的顶层组件除外。

void setVisible(boolean b)

显示或隐藏组件

boolean isShowing()

检查该组件是否显示在屏幕中,如果是,它必须是可见的,且包含在一个正在显示的容器中

boolean isEnabled()

检查组件是否被激活。被激活的组件可以接受键盘输入。组件最初是被激活的。

void setEnabled(boolean b)

激活或禁用组件

Point getLocation()

返回该组件左上角的位置,这是相对于外围容器左上角的位置

Point getLocationOnScreen()

返回该组件左上角的位置,这个位置用屏幕坐标表示。

void setBounds(int x, int y, int width, int height)

移动并重置组件的大小。

void setLocation(int x, int y)

void setLocation(Point p)

将组件移到一个新的位置上。如果该组件不是顶层组件,x,y是容器坐标,若是顶层组件,则为屏幕坐标。

Dimension getSize()

返回该组件当前的尺寸

void setSize(int width, int height)

void setSize(Dimension d)

重置组件的大小

java.awt.Window

方法

说明

void toFront()

将该窗口显示在其他窗口前面

void toBack()

将该窗口移到桌面窗口栈的后面,并重新排列所有的可见窗口

java.awt.Frame

方法

说明

void setResizable(boolean b)

决定用户是否可以重置框架的大小

void setTitle(String s)

将框架标题栏中的文字设置为字符串s

void setIconImage(Image image)

框架显示图标的图像

void setUndecorated(boolean b)

为true时取消框架装饰

boolean isUndecorated()

如果框架无装饰,返回true

int getExtendedState()

void setExtendedState(int state)

获得或设置窗口状态,状态是下列值之一:

Frame.NORMAL

Frame.ICONIFIED

Frame.MAXIMIZED_HORIZ

Frame.MAXIMIZED_VERT

Frame.MAXIMIZED_BOTH

另外,比较常用的一个类(不是JFrame的超类):

java.awt.Toolkit

方法

说明

static Toolkit getDefaultToolkit()

返回默认的工具箱

Dimension getScreenSize()

返回用户屏幕的尺寸

Image getImage(String filename)

加载文件名为filename的图像

如果没有明确指定框架的大小,所有的框架默认为0x0像素。对于专业应用程序来说,应该检查用户屏幕的分辨率,并根据其分辨率编写代码重置框架的大小。

为了得到屏幕的大小,可以如下操作:

战胜困难,走出困境,成功就会属于你。

Java读书笔记10 图形程序设计基础

相关文章:

你感兴趣的文章:

标签云: