Chapter14MyJava教案Word文档下载推荐.docx

上传人:b****6 文档编号:21784143 上传时间:2023-02-01 格式:DOCX 页数:11 大小:137.83KB
下载 相关 举报
Chapter14MyJava教案Word文档下载推荐.docx_第1页
第1页 / 共11页
Chapter14MyJava教案Word文档下载推荐.docx_第2页
第2页 / 共11页
Chapter14MyJava教案Word文档下载推荐.docx_第3页
第3页 / 共11页
Chapter14MyJava教案Word文档下载推荐.docx_第4页
第4页 / 共11页
Chapter14MyJava教案Word文档下载推荐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Chapter14MyJava教案Word文档下载推荐.docx

《Chapter14MyJava教案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Chapter14MyJava教案Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。

Chapter14MyJava教案Word文档下载推荐.docx

一个完整应用程序的GUI可以在运行时刻从一种外观和感觉切换到另一种。

2)Swing的体系结构

与AWT比较,Swing提供了更完整的组件,引入了许多新的特性和能力。

SwingAPI是围绕着实现AWT各个部分的API构筑的。

这保证了所有早期的AWT组件仍然可以使用。

AWT采用了与特定平台相关的实现,而绝大多数Swing组件却不是这样做的,因此Swing的外观和感觉是可客户化和可插的。

上图显示了JFC各个部分之间的相互关系。

Java2D,Accessibility,Drag&

Drop,和AccessibilityAPI是AWT和JFC的一部分,但它们不属于Swing。

这是因为,这些组件使用了一些本地代码,而Swing却不是这样的。

Swing是围绕着一个称为JComponent的新组件构建的,而JComponent则由AWT的容器类扩展而来。

3)Swing的层次结构

下图说明了Swing组件的层次结构:

SwingGUI使用两种类型的类,即GUI类和非GUI支持类。

GUI类是可视的,它从JComponent继承而来,因此称为“J”类。

非GUI类为GUI类提供服务,并执行关键功能;

因此它们不产生任何可视的输出。

4)Swing组件

Swing组件主要为文本处理、按钮、标签、列表、pane、组合框、滚动条、滚动pane、菜单、表格和树提供了组件。

其中一些组件如下所示:

JAppletJButton

JComboBoxJOptionPane

JListJLabel

JScrollPaneJTable

JScrollBarJSlider

JTooltipJTree

第二节基本的Swing应用程序

HelloSwing应用程序的输出产生下图所示的窗口:

每次用户点击按钮时,标签就会更新。

1、HelloSwing

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.accessibility.*;

publicclassHelloSwingimplementsActionListener

{

privateJFramejFrame;

privateJLabeljLabel;

privateJPaneljPanel;

privateJButtonjButton;

privateAccessibleContextaccContext;

privateStringlabelPrefix="

Numberofbuttonclicks:

"

;

privateintnumClicks=0;

publicvoidgo()

{

//Hereishowyoucansetupaparticular

//lookAndFeel.Notnecessaryfordefault.

/*

try{

UIManager.setLookAndFeel(UIManager.getLookAndFeel());

}catch(UnsupportedLookAndFeelExceptione){

System.err.println("

Couldn'

tusethe"

+"

defaultlookandfeel"

+e);

}

*/

jFrame=newJFrame("

HelloSwing"

);

jLabel=newJLabel(labelPrefix+"

0"

jButton=newJButton("

IamaSwingbutton!

"

//Createashortcut:

makeALT-Abeequivalent

//topressingmouseoverbutton.

jButton.setMnemonic('

a'

jButton.addActionListener(this);

//Addsupportforaccessibility.

accContext=jButton.getAccessibleContext();

accContext.setAccessibleDescription("

Pressingthisbuttonincrements"

+

"

thenumberofbuttonclicks"

//Setuppane.

//Giveitaborderaroundtheedges.

jPanel=newJPanel();

jPanel.setBorder(BorderFactory.createEmptyBorder(30,30,10,30));

//Putcomptsinpane,notinJFramedirectly.

jPanel.add(jButton);

jPanel.add(jLabel);

jFrame.setContentPane(jPanel);

//SetupaWindowListenerinnerclasstohandle

//window'

squitbutton.

WindowListenerwl=newWindowAdapter()

publicvoidwindowClosing(WindowEvente){System.exit(0);

}

};

jFrame.addWindowListener(wl);

jFrame.pack();

jFrame.setVisible(true);

publicvoidactionPerformed(ActionEvente)

numClicks++;

jLabel.setText(labelPrefix+numClicks);

publicstaticvoidmain(String[]args)

HelloSwinghelloSwing=newHelloSwing();

helloSwing.go();

}

注意:

1)

StringwinPlaf="

com.sun.java.swing.plaf.windows.WindowsLookAndFeel"

StringmetalPlaf="

javax.swing.plaf.metal.MetalLookAndFeel"

StringmotifPlaf="

com.sun.java.swing.plaf.motif.MotifLookAndFeel"

UIManager.setLookAndFeel(motifPlaf);

}catch(Exceptione){

}

2)

jButton.setToolTipText("

Pressingthisbuttonincrementsthenumber"

2、导入Swing包

●导入Swing包

●选择外观和感觉

●getLookAndFeel()

●设置窗口容器

●JFrame与Frame相似

●你不能直接将组件加入到JFrame中

●一个contentpane包含了除菜单条外所有Frame的可视组件

语句行importjavax.swing.*装入整个Swing包,它包括了标准Swing组件和功能。

选择外观和感觉

HelloSwing中给定了应用程序外观和感觉的格式。

getLookAndFeel()方法返回在Windows环境中的外观和感觉。

在运行Solaris操作系统的机器上,这个方法则返回一个公共桌面环境(CDE)/Motif的外观和感觉。

因为都是缺省值,所以对本例来说,这些行都不是必需的。

3、建立窗口

Swing程序用JFrame对象实现了它们的窗口。

JFrame类是AWTFrame类的一个子类。

它还加入了一些Swing所独有的特性。

HelloSwing中,处理JFrame的代码如下:

publicHelloSwing()

{

JFramejFrame;

JPaneljPanel;

.....

jFrame=newJFrame("

jPanel=newJPanel();

.......

jFrame.setContentPane(jPanel);

}

这段代码与使用Frame的代码十分相似。

唯一的区别在于,你不能将组件加入到JFrame中。

你可以将组件加入到JFrame的contentpane中,或者提供一个新的contentpane。

一个contentpane是一个包含除菜单条外所有框架的可视组件的容器。

要获得一个JFrame的contentpane,可使用getContentPane()方法。

要设置它的contentpane(如前面本例所示),则可使用setContentPane()方法。

4、建立Swing组件

Swing应用程序基础

●建立Swing组件

●HelloSwing.java示例实例化了4个Swing组件,这4个组件是:

JFrame,JButton,JLabel和JPanel

●支持辅助技术

●HelloSwing.java示例代码支持辅助技术

accContext=jButton.getAccessibleContext();

accContext.setAccessibleDescription(

thenumberofbuttonclicks."

HelloSwing程序显式地实例化了4个组件:

JFrame,JButton,JLabel和JPanel。

5、支持辅助技术

HelloSwing.java中唯一支持辅助技术的代码是:

accContext.setAccessibleDescription("

);

下列信息集也可由辅助技术使用:

I'

maSwingbutton!

jLabel=newJLabel(labelPrefix+"

jLabel.setText(labelPrefix+numClicks);

在JFrame,JButton,JLabel和其他所有组件中,都有内建的Accessibility支持。

辅助技术可以很容易地获得文本,甚至与一组件某特定部分相关的文本。

第三节构造一个SwingGUI

Swing包定义了两种类型的组件:

1)顶层容器(JFrame,JApplet,JWindow,和JDialog)

2)轻质组件(其他的J…,如JButton,JPanel和JMenu)

顶层容器定义了可以包含轻质组件的框架。

特别地,一个顶层Swing容器提供了一个区域,轻质组件可在这个区域中绘制自身。

顶层容器是它们对应的重质AWT组件的Swing子类。

这些Swing容器依靠它们的AWT超类的本地方法与硬件进行适当的交互。

通常,每个Swing组件在其容器层次结构中都应当有一个位于组件上面的顶层Swing容器。

例如,每个包含Swing组件的Applet都应作为JApplet(而它自身又是java.applet.Applet的一个子类)的子类来实现。

相似地,每个包含Swing组件的主窗口都应用JFrame来实现。

典型地,如果你在使用Swing组件,你将只能使用Swing组件和Swing容器。

Swing组件可以加入到一个与顶层容器关联的contentpane中,但绝不能直接加入到顶层容器中。

contentpane是一个轻质Swing组件,如JPanel。

下面是一个典型Swing程序的GUI容器层次结构图,这个程序实现了一个包含2个按钮,一个文本域和一个列表:

Jframe(atop-levelSwingcontainer)

contentpane

`+---------+-------+

JButtonJButtonJPanel

+---------+

JTextFieldJList

下面是关于同样的GUI的另一个容器层次结构,只是在这里,GUI是在浏览器中运行的一个Applet。

JApplet(atop-levelSwingcontainer)

下面是构造如上图所示的GUI层次结构的代码:

第四节JComponent类

所有Swing都作为JComponent的子类来实现,而JComponent类又是从Container类继承而来。

Swing组件从JComponent继承了如下功能:

1、边框

你可以用setBorder()方法来指定在组件周围显示的边框。

还可用一个EmptyBorder的实例来指定一个组件在其周围留有一定的额外空间。

2、双缓冲

双缓冲可以改善一个频繁被改变的组件的外观。

现在你不需要编写双缓冲代码――Swing已为你提供了。

缺省情况下,Swing组件是双缓冲的。

3、提示框

通过用setToolTipText()方法来指定一个字符串,你可以提供给用户有关某个组件的帮助信息。

当光标暂停在组件上时,所指定的字符串就会在组件附近的一个小窗口中显示出来。

4、键盘导航

使用registerKeyboardAction()方法,你可以让用户以键盘代替鼠标来操作GUI。

用户为启动一个动作所必须按下的修饰键与字符的组合,由一个KeyStroke对象来表示。

5、应用程序范围的可插式外观和感觉

每个Java应用程序在运行时刻有一个GUIManager对象,它用于确定运行时刻Swing组件的外观和感觉。

由于安全性的限制,你可以通过调用UIManager.setLookAndFeel()方法选择所有Swing组件的外观和感觉。

在你所看见的东西背后,每个JComponent对象都有一个对应的ComponentGUI对象,它用来执行所有关于该JComponent的绘制、事件处理、大小判定等任务。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1