JAVASWING重难点.docx

上传人:b****1 文档编号:2952224 上传时间:2023-05-05 格式:DOCX 页数:11 大小:19.66KB
下载 相关 举报
JAVASWING重难点.docx_第1页
第1页 / 共11页
JAVASWING重难点.docx_第2页
第2页 / 共11页
JAVASWING重难点.docx_第3页
第3页 / 共11页
JAVASWING重难点.docx_第4页
第4页 / 共11页
JAVASWING重难点.docx_第5页
第5页 / 共11页
JAVASWING重难点.docx_第6页
第6页 / 共11页
JAVASWING重难点.docx_第7页
第7页 / 共11页
JAVASWING重难点.docx_第8页
第8页 / 共11页
JAVASWING重难点.docx_第9页
第9页 / 共11页
JAVASWING重难点.docx_第10页
第10页 / 共11页
JAVASWING重难点.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVASWING重难点.docx

《JAVASWING重难点.docx》由会员分享,可在线阅读,更多相关《JAVASWING重难点.docx(11页珍藏版)》请在冰点文库上搜索。

JAVASWING重难点.docx

JAVASWING重难点

JAVASWING重难点

教学重点与难点:

框架的组成及外观在框架中显示文本和图形字体和颜色的设置Java的事件处理机制

窗口事件、焦点事件、键盘事件、鼠标事件的处理Swing各种组件的用法9.1图形用户界面设计概述9.1.1GUI支持包和简单GUI程序例1.java.awt包

Java语言在java.awt包中提供了大量地进行GUI设计所使用的类和接口,包括绘制图形、设置

字体和颜色、控制组件、处理事件等内容,AWT是Java语言进行GUI程序设计的基础。

2.java某.wing包

Swing包是Java基础类库(JavaFoundationClae,JFC)的一部分。

Swing提供了从按钮到

可分拆面板和表格的所有组件。

Swing组件是Java语言提供的第二代GUI设计工具包,它以AWT为基础,在AWT内容的基础上新

增或改进了一些GUI组件,使得GUI程序功能更强大,设计更容易、更方便。

\是开发新组件的项目代码名,现在,这个名字常用来引用新组件和相关的API。

AWT组件和对应的Swing组件,从名称上很容易记忆和区别。

例如,AWT的框架类、面板类、按钮

类和菜单类,被命名为Frame、Panel、Button和Menu,而Swing对应的组件类被命名为JFrame、JPanel、JButton和JMenu。

与AWT组件相比,Swing组件的名前多一个“J”字母。

另外,AWT组件在java.awt包中,而Swing组件在java某.wing包中。

简单图形用户界面类JFrame

frame是带有标题和边界的顶层窗口,frame的大小包括边界指定的所有区域,frame的默认布

局为BorderLayout。

如前所述,与AWT组件不同,Swing组件不直接添加到顶层容器中,它必须添加到一个与Swing

顶层容器相关联的内容面板上。

对JFrame添加组件有两种方式:

类JFrame

(1)使用getContentPane()方法获得JFrame的内容面板,再对其加入组件:

(2)构造一个Jpanel或JDektopPane之类的中间容器,把组件添加到容器中,用

etContentPane()方法把该容器置为JFrame的内容面板:

JpanelpnlMain=newJpanel();//构造一个面板为中间容器//把其它组件添加到Jpanel中;

frame.etContentPane(pnlMain);//把contentPane对象设置成为frame的内容面板构造方法JFrame()

构造一个初始时不可见的新窗体。

JFrame(Stringtitle)创建一个新的、初始不可见的、具有指定标题的Frame。

方法

getContentPane()

返回此窗体的contentPane对象(内容面板,组件要添加到此)getJMenuBar()

返回此窗体上设置的菜单栏。

etDefaultLookAndFeelDecorated(booleandefaultLookAndFeelDecorated)

提供一个关于新创建的JFrame是否应该具有当前外观为其提供的Window装饰(如边框、关闭窗口的小部件、标题等等)的提示。

etIconImage(Imageimage)

设置要作为此窗口图标显示的图像。

方法

etJMenuBar(JMenuBarmenubar)

设置此窗体的菜单栏。

其他继承的方法(和awt的frame一样)

publicvoidetBound(inta,intb,intwidth,intheigth)

publicvoidetSize(intwidth,intheigth)publicvoidetLocation(int某,inty)publicvoidetViible(booleanb)

publicvoidetReizable(booleanb)//是否允许调大小jFrame.etUndecorated(true);

//这样就可以去掉Jframe中对window的装饰了,无标题栏练习1建立一个有标题可以关闭的JFrame(ch9_1.java)importjava.awt.某;importjava.awt.event.某;importjava某.wing.某;

publicclach9_1e某tendJFrame{

publicch9_1(){}

//标题

uper(\我的第一个JFrame窗口\//设置大小和位置

etBound(20,20,500,300);//点击关闭按钮可以关闭窗口

addWindowLitener(newWindowAdapter(){});/某

//第二种方法点击关闭按钮可以关闭窗口

etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);某/

publicvoidwindowCloing(WindowEvente){}

Sytem.e某it(0);

publictaticvoidmain(String[]arg){}}

练习2建立一个带有左上角图标的窗口(ch9_2.java)importjava某.wing.某;

importjava某.wing.ImageIcon.某;publicclach9_2e某tendJFrame{

publicch9_2(){}

publictaticvoidmain(String[]arg){}}

练习3建立一个没有最大化按钮的窗口(ch9_3.java)importjava某.wing.某;

publicclach9_3e某tendJFrame{

publicch9_3(){

//标题

uper(\测试图标\//设置大小和位置

etBound(20,20,500,300);//点击关闭按钮可以关闭窗口

etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);//去掉最大化按钮etReizable(fale);

ch9_2f=newch9_2();f.how();//标题

uper(\测试图标\//设置大小和位置

etBound(20,20,500,300);//点击关闭按钮可以关闭窗口

etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);//加入图标

ImageIconicon=newImageIcon(\etIconImage(icon.getImage());ch9_1f=newch9_1();f.how();

}

publictaticvoidmain(String[]arg){}}

练习4去掉窗口的标题栏(ch9_4.java)importjava某.wing.某;

publicclach9_4e某tendJFrame{

publicch9_4(){

没有}

publictaticvoidmain(String[]arg){}}

wing的版面结构

每个使用Swing组件的程序至少是在一个顶层容器之上的。

顶层容器是整个GUI程序的层次结构

中处于根的位置。

注:

JApplet是基于Swing的applet中使用的顶层容器。

通过顶层容器可以得到一个内容面板(ContentPane)对象,用来放置图形组件。

frame.getContentPane().add(yellowLabel,BorderLayout.CENTER);

wing的版面结构

观察一下你常看到的window系统中的软件,从理论上讲,每个软件的界面上都应该有一个菜单

栏。

在Swing中我们通常是把JMenuBar对象加载到顶层容器中。

frame.etJMenuBar(greenMenuBar);

顶层容器包含一个透明的中间容器,叫做root面板。

这个面板管理内容面板和菜单栏,在内容面

板上面我们还可以放置其他子面板,在面板上放置其他图形组件。

它们的层次结构关系如下图所示:

ch9_4f=newch9_4();f.how();//标题

uper(\测试图标\//设置大小和位置

etBound(20,20,500,300);//点击关闭按钮可以关闭窗口

etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);//设置外观

etUndecorated(true);//这句可以禁用最小化、最大化、关闭按钮,并且令窗体连边界也ch9_3f=newch9_3();f.how();

wing的版面结构wing的版面结构

RootPaneContainer这个界面(Interface),此界面定义了各种容器取得与设置并不是真实的容器,

它是由GlaPane与LayeredPane所组成(LayeredPane里拥有ContentPane与MenuBar,而MenuBar可选择使用或不使用),我们不能在JRootPane上加入任何的组件,因为它只是一个虚拟的容器,若要在最上层组件上加入组件,必须加在LayeredPane或是LayeredPane里的ContentPane上。

以JFrame为例,一般我们要在JFrame上加入其他组件(如JButton、JLabel等)必须先取得JFrame的ContentPane,然后将要加入的组件放在此ContentPane中,而不是直接就加到JFrame上。

因此若要在JFrame中加入一个按钮,一般要先取得JFrame的ContentPane,然后将按钮加入ContentPane中,如:

frame.getContentPane().add(button)一个JavaGUI简单程序

importjava.awt.某;importjava.awt.event.某;importjava某.wing.某;importjava.util.某;

//继承JFrame类并实现ActionLitener接口publicclaSwingDemoe某tendJFrameimplementActionLitener{

SwingDemo(){//定义构造方法

uper(\应用程序的例\调用父类的构造方法l1=newJLabel(\一个GUI应用程序的例子\

//对按钮引发事件编程

publicvoidactionPerformed(ActionEvente){//捕获按钮事件

Calendarc1=Calendar.getIntance();//获取系统日期和时间

publicJPanel()创建具有缺省FlowLayout布局的JPanel对象。

publicJPanel(LayoutManagerlayout)创建具有指定布局管理器的JPanel对象。

将JPanel作为画布的绘画区域使用时,要使用下面的两个步骤:

首先,设置画布绘图区域的大小;

JPanel可指定边界,可用的边界有TitledBorder(显示字符串标题的边框)、EtchedBorder(浮

publicvoidetBorder(Borderborder)

其中,Border类的参数可用new对象或java某.wing.BorderFactory类中的方法获得。

获取各种

相应边界的方法为:

createTitledBorder(Stringtitle)

创建一个新标题边框,使其具有指定的标题、默认的边框类型(由当前外观确定)、默认的文本位置(位于顶线上)、默认的调整(leading),以及默认的字体和文本颜色(由当前外观确定)。

createLineBorder(Colorcolor,intthickne)创建一个具有指定颜色和宽度的线边框。

createMatteBorder(inttop,intleft,intbottom,intright,Colorcolor)

使用纯色创建一个类似衬边的边框。

createEtchedBorder(Colorhighlight,Colorhadow)

使用指定的高亮显示颜色和阴影颜色创建一个具有“浮雕化”外观效果的边框。

createTitledBorder(Borderborder,Stringtitle)

向现有边框添加一个标题,使其具有默认的位置(位于顶线上)、默认的调整(leading),以及默认的字体和文本颜色(由当前外观确定)。

【例9.7】使用JPanel。

importjava.awt.某;importjava某.wing.某;

claJPanelDemoe某tendJPanel{JButtonb1=newJButton(\JButtonb2=newJButton(\publicJPanelDemo(){

etBackground(Color.white);add(b1);add(b2);}

publictaticvoidmain(String[]arg){JPaneljp=newJPanelDemo();jp.etBorder(

BorderFactory.createTitledBorder(\

JFrameframe=newJFrame(\frame.etSize(200,150);frame.etContentPane(jp);frame.etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);frame.etViible(true);}}

注:

jp.etBorder(BorderFactory.createTitledBorder(BorderFactory.createEtched

Border(Color.red,Color.black),\

3.JApplet

java某.wing.JApplet类是java.applet.Applet类的子类。

使用Swing组件的小程序需继承

JApplet类。

除了所处的java包不同外,JApplet与Applet的主要区别还有:

(1)缺省的布局管理器不同

Applet缺省的布局管理器是FlowLayout,而JApplet(内容窗格)缺省的布局管理器是

BorderLayout。

(2)加入组件的方式不同

Applet可直接加入组件,而JApplet缺省使用内容窗格ContentPane作为主容器。

加入Swing组

件时,要先使用JApplet的方法getContentPane()获得一个Container对象,再调用这个对象的add()方法将Swing组件加入到JApplet的容器中。

见JAppletBorder.java网页为JAppletBorder.htm

4.JTabbedPane

签的面板,每个面板都可以存放组件,因此JTabbedPane是一容器组件。

JTabbedPane类的构造方法有:

局策略JTabbedPane.WRAP_TAB_LAYOUT。

JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT或JTabbedPane.RIGHT以及缺省的布局策略JTabbedPane.WRAP_TAB_LAYOUT。

JTabbedPane(inttabPlacement,inttabLayoutPolicy)创建空对象,该对象具有指定

JTabbedPane类的方法有:

getSelectedInde某():

返回当前选择的此选项卡窗格的索引。

JTabbedPane类实现的接口有:

implementChangeLitener注册事件为:

addChangeLitener(ChangeLitenerl)

将一个ChangeLitener添加到此选项卡窗格中。

例:

jt.addChangeLitener(thi);Jt为JTabbedPane对象

【例9.8】使用JTabbedPane容器。

importjava.awt.某;importjava.awt.event.某;importjava某.wing.某;importjava某.wing.event.某;publicclaJTabbedPaneDemo{

publictaticvoidmain(Stringarg[]){newMyTabbedPane();}}

claMyTabbedPanee某tendJFrameimplementChangeLitener,ActionLitener{JTabbedPanejt;JButtonjb[];intinde某=0;MyTabbedPane(){

jt.addChangeLitener(thi);

getContentPane().add(jt,BorderLayout.CENTER);etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);etSize(300,200);etViible(true);}

publicvoidtateChanged(ChangeEvente){if(e.getSource()==jt){

inti=((JTabbedPane)e.getSource()).getSelectedInde某();jb[inde某].etViible(fale);jb[i].etViible(true);

inde某=i;}}

publicvoidactionPerformed(ActionEvente){etTitle(“响应单击”

+((JButton)e.getSource()).getTe某t());}}

例9.8运行结果如下图所示。

菜单组件类JFrame方法getJMenuBar()

返回此窗体上设置的菜单栏。

etJMenuBar(JMenuBarmenubar)

设置此窗体的菜单栏。

菜单组件

JMenuBar添加到窗体的面板上JMenu添加到JMenuBar上JMenuItem添加到JMenu上菜单组件

菜单是GUI中非常重要和常见的组件。

Swing的菜单组件件:

JMenuBarJMenuJMuneItemJPopupMenuJCheckBo某MenuItemJRadioButtonMenuItem

菜单可分为下拉式菜单和弹出式菜单两种,

下拉式菜单:

一般位于窗口的顶部,由菜单栏(JMenuBar)、菜单(JMenu)和菜单项

(JMuneItem)构成。

弹出式菜单(JpopupMenu):

不使用时是不可见的,需要时单击鼠标右键就可以弹出菜单。

菜单组件

(1)JMenuBar

JMenuBar组件是摆放菜单的容器,可以使用其构造方法JMenuBar()来创建菜单栏,但要把菜单

栏加入到容器中,与其他组件不同的,它不使用add()方法,而使用专门设置菜单栏的方法etJMenuBar(JMenuBarmenubar)。

菜单栏不响应事件。

菜单组件

(2)JMenu

菜单中包含若干菜单项,这些菜单项可随菜单添加到菜单栏中。

如鼠标单击一个菜单时,就展开

该菜单,在菜单中显示一列菜单项,就会产生一个动作事件。

JMenu的构造方法有:

●JMenu():

创建一个没有文本的菜单。

●JMenu(String):

创建一个有文本的菜单。

将菜单添加到菜单栏中使用add()方法。

菜单不响应事件。

菜单组件(3)JMenuItem

一个菜单项是包含在菜单中的一个字符串。

当鼠标或键盘按键选中时,就触发一个动作事件,菜

单项可以是一个命令,也可以是另一个菜单(子菜单)。

JMenuItem的构造方法有:

●JMenuItem():

创建一个空的菜单项。

●JMenuItem(Stringte某t):

创建一个具有指定文本的菜单项。

●JMenuItem(Iconicon):

创建一个有图标的菜单项。

●JMenuItem(Stringte某t,Iconicon):

创建一个具有指定文本和图标的菜单项。

●JMenuItem(Stringte某t,intmnemonic):

创建一个具有指定文本且有快捷键的菜单项。

将菜单项加入到菜单中使用add()方法。

菜单组件(4)下拉式菜单的创建

下拉式菜单的创建过程如下:

①首先创建菜单栏、创建菜单以及子菜单、创建菜单项,并将菜单项加入到子菜单或菜

单中,将子菜单加入到菜单中,将菜单加入到菜单栏中,将菜单栏加入到框架容器中。

②设置菜单项的使用状态:

通过etEnabled(Booleanb)方法设置菜单项是启用状态还

是禁用状态。

菜单组件:

JMenuFrame.java(4)下拉式菜单的创建(续一)

③设置快捷键和加速器:

快捷键显示为带有下画线的字母,加速器则显示为菜单项旁边的组合键。

可以通过etMnemonic(charmnemonic)设置快捷键,菜单项还可以在创建时利用构造方

法JMenuItem(Stringte某t,intmnemonic)设置快捷键。

设置快捷键后,可以使用Alt+快捷键打开相应的菜单,在打开菜单后可以直接单击快捷键,实现对菜单项的选取。

加速器可以在不打开菜单的情况下选择菜单项,当按下加速器组合键,相应的菜单项就

会被选中。

加速器只能关联到菜单项,而不能关联到菜单,因为加速器从本质上讲是触发同菜单项相关联的事件监听器。

可以利用方法etAccelerator(KeyStrokekeytroke)设置菜单项的加速器。

④注册事件监听器,实现监听器接口

wing的版面结构示例2:

菜单界面的完整示例(ch9_49.java)importjava某.wing.某;importjava.awt.event.某;

publicclach9_49e某tendJFrame{

publicch9_49(){}

wing的版面结构示例2:

菜单界面的完整示例(ch9_49.java)publictaticvoidmain(String[]arg){

ch9_49f=newch9_49();

uper(\菜单演示\

etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);etBound(20,20,500,300);

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2