资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,13,章,Java Swing,编程,Java Swing,是 采用,Java,语言编写,GUI,(图形用户接口)程序的类库,它是轻量级的类库,所有,Swing,中的图形组件都是以大写字母“,J”,开头,如容器,Jframe,、按钮,Jbutton,、文本区域,JtextField,等。,本节将首先介绍,Swing,中的容器,因为容器是放置组件的场所,所以一旦用户明白容器的创建后再使用,就可以方便地向容器添加组件了。在,Swing,编程中对事件的处理也是很重要的部分,用户图形接口是个交互性的平台,需要响应用户的输入或行为(如单击菜单打开一个窗口等)。在,13.2,节通过一个简单的例子追踪一个事件使读者对,Swing,的事件模型有感性的任何和初步地理解。,13.3,节在本章占用了大部分篇幅,读者通过这部分的学习可以清楚的理解并掌握各种图形组件的功能和使用。,13.4,节的布局管理器是具有“,Java”,特色的功能,因为使用,Java,语言编写的程序具有跨平台的特性,所以要求可以依据不同的平台管理图形界面的组件管理。灵活使用布局管理器可以创建简洁、美观的用户界面。,13.1 Swing,容器,容器是放置界面组件的地方,在,Swing,中提供了两个容器,一个是,Jframe,,它是一个最基本的窗口容器,一个是,Jpanel,,也称为面版,面版可以放置在,Jframe,容器或,Applet,上,使界面的布局更灵活。,常用的布局方式是首先设计几个,JPanel,面版,再将组件添加到,JPanel,上,然后将,JPanel,按照布局要求再添加到,JFrame,上,当然这种嵌套关系可以进一步深入,如在,JPanel,上可以继续添加,JPanel,,只是一般的界面不会设计的这么复杂。其实界面一定要保持简洁、美观、功能齐全且布局规范,最好不要使用过于复杂的界面布局。下面首先介绍,JFrame,容器。,13.1.1 JFrame,容器,JFrame,是,java.awt.Frame,的扩展版本,是一个,window,子类,在使用,Swing,类库实现用户图形接口,必须继承该类。,JFrame,容器包括窗口标题、窗口外观、窗口边界、调整窗口大小的图标、关闭和最小化窗口的图标。并且可以直接在容器上添加组件,如按钮、文本等。,该类的构造方法:,public JFrame()throws HeadlessException,。,创建了一个新的容器窗口,默认该窗口是不可见的。,public JFrame(String title)throws HeadlessException,创建一个新的容器窗口,通过方法的参数设置窗口标题,该窗口默认是不可见的。,该类的常用方法:,public Container getContentPane(),该方法返回一个框架对象,使用该框架对象来添加组件,如增加按钮、菜单、工具栏、列表框等组件。,setSize(int width,int hight),设置窗口尺寸、窗口大小以像素为单位计算。,show(),13.1.2 JPanel,容器,JPanel,容器是个通用容器,在该容器上可以放置其他组件如单选按钮、列表框等。还包含其他容器,如一个新的,JPanel,对象,从而方便地实现容器的嵌套。为设计灵活的用户界面提供方便。,JPanel,容器也称为面板,即英文,Panel,的直译。以后在用到,JPanel,的地方我们就统一称为面板。在面板创建后是无法单独显示的。必须放在,JFrame,或,Applet,这样的顶层窗口中才可以显示。该类的构造函数:,JPanel(),:创建一个面板,并且该面板组件的布局管理器为,FlowLayout(),。,JPanel(LayoutManager layout),:创建一个面板,且该面板设置了指定的布局管理器。布局管理器管理在容器上放置的组件,具体的内容会在,13.4,节详细介绍。,13.2 Swing,的事件模型,无论用户界面设计的如何美观别致,最重要的一点是知道这些组件能做什么,如单击一个“打开文件”按钮,我们希望打开的是文件对话框,而不希望程序没有任何响应。,Java,提供了事件模型,使,Swing,中出现的任何组件都会响应用户的某种动作,完成用户和程序的交互。这其实也是用户接口的基本功能。本节通过一个具体的例子,即制作一个按钮,但用户单击时,按钮上的文本标签会不断变化,记录用户单击按钮的次数。通过这个例子使读者知道组件是如何响应用户动作的,其间会涉及到其他知识点,会在使用时一一简单介绍,但是这里的介绍不会喧宾夺主,使读者的精力集中在事件响应以及事件的处理上。,13.2.1,制作一个按钮,制作一个按钮很容易,只要创建一个,JButton,类对象即可。,JButton,类的构造函数有以下几个。,public JButton(),:创建不带文本也不带图标的按钮,或称为空按钮,通常这样的按钮需要调用其他方法来设置文本或图标。空按钮没有意义,用户不知道这样的组件有什么作用。,public JButton(Icon icon),:创建带图标的按钮,图标对按钮的作用有一定的指导意义,如在制作工具栏时就是使用带图标的按钮实现的。如在,word,中的工具栏如图,13.3,所示。,public JButton(String text),:创建带文本的按钮,如我们在使用软件时经常遇到的“确认”按钮、“取消”按钮等。,public JButton(String text,Icon icon),:创建带有文本且带有图标的按钮。,JButton,自己拥有一个窗口,一旦屏幕更新如放大窗口时,,JButton,组件就会自动重绘。用户需要做的只是把这些按钮创建出来,并放在一个容器中。,13.2.2,实现按钮的事件监听,在,13.2.1,中创建了三个按钮,但是无论如何单击按钮,程序没有任何反应,所以此时必须要求自己编写事件处理代码来响应单击事件。用户单击按钮便引发一系列事件,这也正是,GUI,编程中事件驱动模型的内涵。,在,Swing,中,每个组件都可对发生在其上的事件做出响应。例如,如果你需要知道鼠标在按钮上移动的事件,就需要注册与鼠标移动事件相关的信息,提供对该动作的处理代码。,这里还是通过为一个按钮注册事件监听机制使按钮组件可以响应用户的单击动作。此时需要为按钮注册一个事件监听器。可以通过调用,JButton,的,addActionListener(),方法实现,,13.2.3 Swing,的事件模型,Swing,事件模型的显著特点是引发事件的组件与处理事件的代码分开。在,Swing,中的任何组件都可以出发事件,事件类型多样,如按钮组件,有单击按钮、双击按钮、鼠标划过按钮等事件,这些事件都有相应的类与之对应。程序员需要做的就是编写处理事件的类,创建监听器对象,并对组件注册监听器。,下表,13.1,是事件、监听器、添加监听器方法,以及支持这些事件的基本组件的总结。,通过该表读者可以发现每种,Swing,组件都支持某种或几种类型的事件。如果程序员需要在组件上实现监听某种行为,只要找出该行为对应的事件类型,并创建监听器类,为该组件注册监听器即可。,13.3 Swing,组件,Swing,提供了丰富的组件,这些组件的合理使用,可以方便地满足用户界面设计的需求,在创建组件时,需要选择组件的构造函数一完成特殊的需要。本节在讲解这些图形组件时,只选择最常用的一种构造函数,如果读者有特殊的需要可以查阅,Java,的,HTML,文档。,13.3.1,按钮,在,Swing,中引入了不同类型的按钮,如单选按钮、复选框、菜单选项都继承了,AbstractButton,,本节将首先示范各种可用按钮。,这些按钮包括,BasicArrowButton,、,JToggleButton,、,JCheckBoxButton,和,JRadioButton,,如代码按钮示例所示。,13.3.2,图示(,Icons,),在,13.2.1,节,读者已经看到了图示的作用。实际上可以在,JLabel,、,JButton,、,JCheckBox,、,JRadioButton,等类中使用图示。本节将以按钮为例介绍如何使用图示。,制作图示第一需要创建一个,ImageIcon,对象,该类的构造函数的参数是图示文件(如,image.gif,)的路径(如,d:imagesimage.gif,)。在调用组件的,setIcon(),方法,该方法的参数为一个,ImageIcon,对象。这样程序就可以打开图形文件,在组件上显示图示文件了。代码按钮上的图示示例程序。,13.3.3,文本,文本组件为,JTextField,对象,在代码中已经使用过该组件,这里我们为该组件增加更多的监听功能。这里读者也可以再次复习按钮监听器的使用。代码文本块示例程序。,13.3.4,工具提示,读者可能有这样的经验,如操作,Word,时,当鼠标停留在工具栏上某个工具时,会弹出一个内含小方框,文字说明工具的作用。,Swing,中的几乎所有组件都是继承自,JComponent,,它提供了一个,setToolTipText(String str),方法,来创建工具提示。如一个,JButton,对象为,jb,,在该对象上创建工具提示如下所示。,jb.setToolTipText(“,保存文件”,);,Swing,的其他组件也可以这样调用创建自己的“工具提示”。,13.3.4,工具提示,读者可能有这样的经验,如操作,Word,时,当鼠标停留在工具栏上某个工具时,会弹出一个内含小方框,文字说明工具的作用。,Swing,中的几乎所有组件都是继承自,JComponent,,它提供了一个,setToolTipText(String str),方法,来创建工具提示。如一个,JButton,对象为,jb,,在该对象上创建工具提示如下所示。,jb.setToolTipText(“,保存文件”,);,Swing,的其他组件也可以这样调用创建自己的“工具提示”。,13.3.4,工具提示,读者可能有这样的经验,如操作,Word,时,当鼠标停留在工具栏上某个工具时,会弹出一个内含小方框,文字说明工具的作用。,Swing,中的几乎所有组件都是继承自,JComponent,,它提供了一个,setToolTipText(String str),方法,来创建工具提示。如一个,JButton,对象为,jb,,在该对象上创建工具提示如下所示。,jb.setToolTipText(“,保存文件”,);,Swing,的其他组件也可以这样调用创建自己的“工具提示”。,13.3.5,单选按钮,在,Swing,中设计了单选按钮,其目的是只能在多种选择中选择一个。实现单选按钮很简单,只要创建一组,JRadioButton,,再把这些组件放到同一个,ButtonGroup,中就可以。在同一个容器中可以有多个,ButtonGroup,。其中,JRadioButton,的初始状态可以自由设置为,false,或,true,,这取决于程序的需要。但不能同时把多个,JRadioButton,设置为,true,。,JRadioButton,类的构造函数如下:,public JRadioButton(String str),:创建带有文本字符标识的单选按钮。,public JRadioButton(String str,boolean bl),:创建带有文本字符标识的单选按钮,并且可以设置单选按钮的起始状态。,13.3.6,复选框,复选框是可以多选的一类图形组件,当选中该组件时,组件前端的方括号内打对勾标记,用户可以设置监听器,触发某种行为,代码复选框示例程序提供了完整的创建复选框的程序代码。,13.3.7,组合框,组合框的作用是使用户只能从供选择的元素中选出一个元素。,Swing,类库中的,JComboBox,类创建组合框。,JComboBox,只允许用户从列表中选
展开阅读全文