《IT认证Java语言程序设计课件》由会员分享,可在线阅读,更多相关《IT认证Java语言程序设计课件(68页珍藏版)》请在金锄头文库上搜索。
1、 第十一章第十一章图形用户界面图形用户界面IT认证Java语言程序设计一、一、Java的图形用户界面的图形用户界面 awt包包 AWT包提供的类大致上可以归纳成4大类: 图形界面组件,如:窗口、按钮、菜单等。 2D图形绘制组件,如:直线、圆形。 布局对象:用来安排图形界面组件的位置。 事件处理对象,用来处理图形界面组件所触发的事件。 IT认证Java语言程序设计awt包组件包组件Java.lang.ObjectMenuComponentComponentMenuBarMenuItemContainerLabelButtonTextComponentCheckBoxMenuWindowPanel
2、FrameDialogTextFieldTextAreaIT认证Java语言程序设计屏幕坐标位置屏幕坐标位置 缺省状态下原点的位置为屏幕左上角位置(0,0)。x坐标是从左向右移动的水平距离,y坐标是从上向下移动的垂直距离 。(0,0)X坐标轴Y坐标轴IT认证Java语言程序设计建立窗口建立窗口Frame类的操作类的操作 创建窗口的基本和必要操作包括以下方面: (1)可以设置窗口的大小。 (2)给窗口一个标题。 (3)在屏幕的某个位置放置窗口。 (4)显示窗口。 (5)关闭窗口。 IT认证Java语言程序设计Java实例实例建立窗口建立窗口import java.awt.*;class Wind
3、ow1 static Frame fra=new Frame(这是一个窗口程序); /创建一个窗口对象fra并设置窗口标题为这是一个窗口程序 public static void main(String args) fra.setBounds(0,0,300,200); /继承Component类的方法,设置窗口大小并将窗口放置在屏幕的某个位置 fra.setResizable(false); /设置窗口尺寸不可以改 fra.setState(fra.NORMAL); /设置窗口为标准状态 fra.show(); /继承Window类的show()方法,在屏幕上显示窗口 IT认证Java语言程
4、序设计Frame类的方法类的方法Frame类的构造方法 主要功能 Frame()创建没有标题的窗口 Frame(String title) 创建以title为标题的窗口 Frame类的方法 主要功能 Int getState() 获得Frame窗口的状态(Frame.Normal表示一般状态,Frame.ICONIFIED表示最小化状态) void setState(int state) 设置Frame窗口的状态(Frame.Normal表示一般状态,Frame.ICONIFIED表示最小化状态) String getTitle() 获得Frame窗口的标题 void setTitle(Str
5、ing title) 设置Frame窗口的标题 boolean isResizable() 测试Frame窗口是否可以改变大小 void setResizable(boolean r) 设置Frame窗口是否可以改变大小 Image getIconImage() 返回窗口的最小化图标 void setIconImage(Image img) 设置窗口的最小化图标为img IT认证Java语言程序设计标签组件标签组件 标签是用来在窗口中显示文字的组件。它是由java.awt类库中的Label类来创建。通过getText()方法获得标签所显示的文字;通过setText()方法可以改变标签内的文字。
6、 IT认证Java语言程序设计 Label类的方法类的方法Label类的构造方法 主要功能 Label() 创建一个没有文字的标签 Label(String str) 创建一个以str为文字的标签 Label(String str,int align) 创建一个以str为文字的标签,并以align为对齐方式,其中Label.LEFT、Label.CENTER、Label.RIGHT分别为居左、居中和居右 Label类的方法 主要功能 Int getAlignment() 返回标签内文字的对齐方式 Void setAlignment(int align) 设置标签内文字的对齐方式 String
7、getText() 获得标签内的文字 Void setText(String text) 设置标签内的文字 IT认证Java语言程序设计Java实例实例建立标签建立标签import java.awt.*;class Label1 public static void main(String args) Frame fra=new Frame(这是创建标签的程序); Label bl=new Label(); /创建一个空标签 fra.setBounds(0,0,300,200); bl.setText(欢迎使用Java语言); /为标签添加文字 bl.setAlignment(Label.CE
8、NTER); bl.setBackground(Color.blue); bl.setForeground(Color.red); fra.add(bl); fra.setVisible(true); IT认证Java语言程序设计按钮组件按钮组件 按钮提供用户快速启动某一动作的方法。通常用户在使用鼠标或键盘按下按钮时,计算机会产生一系列的动作,完成一定的操作。 IT认证Java语言程序设计Button类的方法类的方法Button类的构造方法 主要功能 Button() 创建一个没有标题的按钮 Button(String str) 创建一个以str为标题的按钮 Button类的方法 主要功能 S
9、tring getLabel() 获得按钮的标题 Void setLabel(String str) 设置按钮的标题为str IT认证Java语言程序设计Java实例实例建立按钮建立按钮import java.awt.*;class But2 public static void main(String args) Frame fra=new Frame(创建按钮程序); Button but=new Button(push me); fra.setBounds(0,0,300,200); fra.setLayout(null); /关闭页面设置 but.setBounds(50,50,100
10、,50); /设置按钮的大小 fra.add(but); fra.setVisible(true); IT认证Java语言程序设计 文本框文本框 文本框是用来在窗口中显示文字的矩形框,这些文字可以被用户编辑。文本框可以用来输入文字、编辑文字、并显示这些的文字内容。IT认证Java语言程序设计TextField类的方法类的方法TextField类的构造方法 主要功能 TextField() 创建一个空的文本框 TextField(int columns) 创建一个空的文本框,具有指定列数 TextField(String text) 创建一个包含有指定“text”内容文本框 TextField(
11、String text,int culumns) 创建一个包含有指定列数和“text”内容的文本框 TextField类的方法 主要功能 String getText() 获得文本框的内容 int getColumns() 获得文本框的列数 void setText(String text) 设置文本框的内容为text void setColumns(int columns) 设置文本框的列数 IT认证Java语言程序设计Java实例实例建立文本框建立文本框import java.awt.*;class Text public static void main(String args) Fra
12、me fra=new Frame(创建文本框程序); TextField txt1=new TextField(50); TextField txt2=new TextField(50); fra.setBounds(0,0,300,200); fra.setLayout(null); txt1.setBounds(50,50,130,20); txt2.setBounds(50,70,130,20); fra.add(txt1); fra.add(txt2); fra.setVisible(true); IT认证Java语言程序设计 字体字体 在java中,各种文字都是以图形的方式输出,所以
13、可以通过使用Font类和FontMetrics类的方法设置字型、字体大小等,输出通过Graphics类提供的输出方法输出文字内容。 IT认证Java语言程序设计Font类的方法类的方法Font类的构造方法 主要功能 Font(String fontname,int style,int size) 创建的字体名称为fontname、style为字体样式、size为字体大小。 Font类的方法 主要功能 Font decode(String str) 获得字符串所描述的字体 String getFontName() 获得字体名称 int getStyle() 获得字体的样式 int getSize
14、() 获得字体的大小尺寸 boolean isPlain() 测试字体是否是正常体 boolean isItalic() 测试字体是否是斜体 String toString() 将此对象转换为字符串表示 IT认证Java语言程序设计FontMetrics类的方法类的方法FontMetrics类的构造方法 主要功能 FontMetrics (Font font) 创建一个FontMetrics类的对象。 FontMetrics类的方法 主要功能 Font getFont(r) 获得当前字体 int getLeading() 获得字体的Leading(字冠)值 int getAscent() 获得
15、字体的Ascent(上差)值 int getDecent() 获得字体的Decent(下差)值 int getHeight() 获得字体的Height(高度)值 String toString() 返回对象的字符串表示 IT认证Java语言程序设计Graphics类的方法类的方法使用Graphics类设置字体 的方法: setFont(Font myfont); 使用Graphics类中定义的方法在屏幕上输出设置好字体的文字内容 。下面是输出字符或字符串内容的Graphics类方法Graphics类的方法 主要功能 drawString(String str,int x,int y) 以x,y
16、为起始位置,用当前的颜色和字体绘制str字符串内容 drawChars(char ch,int offset, int number,int x,int y) 从字符数组ch的第offset位置的字符开始(offset为数组下标)总共截取number个字符;以x,y为坐标的起始位置,用当前的颜色和字体绘制number个字符 drawBytes(byte bt,int offset, int number,int x,int y) 从字节数组bt的第offset位置的字节开始(offset为数组下标)总共截取number个字符;以x,y为坐标的起始位置,用当前的颜色和字体绘制number个字符
17、IT认证Java语言程序设计Java实例实例设置字体设置字体import java.awt.*;import java.awt.*;public class Fonts extends Frame public class Fonts extends Frame public Fonts() public Fonts() super( super( 设置字体程序设置字体程序 ); ); setSize( 420, 125 ); setSize( 420, 125 ); show(); show(); public void paint( Graphics g ) public void pai
18、nt( Graphics g ) g.setFont(new Font(Serif,Font.BOLD,12); g.setFont(new Font(Serif,Font.BOLD,12); g.drawString(Serif 12 point bold.,20,50); g.drawString(Serif 12 point bold.,20,50); g.setFont(new Font(Monospaced,Font.ITALIC,24); g.setFont(new Font(Monospaced,Font.ITALIC,24); g.drawString(Monospaced 2
19、4 point italic.,20,70); g.drawString(Monospaced 24 point italic.,20,70); g.setFont(new Font(SansSerif,Font.PLAIN,14); g.setFont(new Font(SansSerif,Font.PLAIN,14); g.drawString(SansSerif 14 point plain., 20, 90 ); g.drawString(SansSerif 14 point plain., 20, 90 ); g.setColor(Color.red); g.setColor(Col
20、or.red); g.setFont( new Font(Serif,Font.BOLD+Font.ITALIC,18); g.setFont( new Font(Serif,Font.BOLD+Font.ITALIC,18); g.drawString(g.getFont().getName()+ +g.getFont().getSize()+ g.drawString(g.getFont().getName()+ +g.getFont().getSize()+point bold italic.,20,110);point bold italic.,20,110); public stat
21、ic void main( String args ) public static void main( String args ) Fonts app = new Fonts(); Fonts app = new Fonts(); IT认证Java语言程序设计二、二、Java语言中的事件处理语言中的事件处理 当用户在图形用户界面中对特定图形界面元素单击、双击鼠标或单击键盘等操作时,通常会引发一个系统预先定义好的事件,用户只需编写程序代码对特定事件发生时做出何种响应即可。IT认证Java语言程序设计 概念概念 在对事件进行处理时,它是采用一种委托事件模型的在对事件进行处理时,它是采用一种委托事
22、件模型的形式。它的含义是将事件的处理委托给独立的对象,这样形式。它的含义是将事件的处理委托给独立的对象,这样使得用户界面与程序逻辑分开,整个使得用户界面与程序逻辑分开,整个“委托事件模型委托事件模型”由由产生事件的对象、事件对象和监听者对象之间的关系所组产生事件的对象、事件对象和监听者对象之间的关系所组成。成。 产生事件的对象会在事件产生时,将与该事件相关的产生事件的对象会在事件产生时,将与该事件相关的信息封装在一个称之为信息封装在一个称之为“事件对象事件对象”的对象中,并将该对的对象中,并将该对象传递给监听者对象,监听者对象根据该事件对象内的信象传递给监听者对象,监听者对象根据该事件对象内的
23、信息决定适当的处理方式。监听者对象要受到事件发生的通息决定适当的处理方式。监听者对象要受到事件发生的通知,必须在程序中向产生事件的对象注册,当事件产生时,知,必须在程序中向产生事件的对象注册,当事件产生时,产生事件的对象就会主动通知监听者对象,监听者对象根产生事件的对象就会主动通知监听者对象,监听者对象根据产生该事件的对象来决定处理事件的方法。监听者对象据产生该事件的对象来决定处理事件的方法。监听者对象就是用来处理事件的对象,它等候事件的发生,并在事件就是用来处理事件的对象,它等候事件的发生,并在事件发生时接收到通知。发生时接收到通知。 IT认证Java语言程序设计事件处理事件处理(1)图形用
24、户界面中每一个可能产生事件的组件为事件源,假如一个Button对象引发ActionEvent类代表的事件ACTION_PERFORMED;(2)如果要监听事件源上发生的事件,就要把能够处理该事件的监听者注册给事件源,如将实现了ActionListener接口的对象注册给Button对象。具体注册方法是调用事件源的相关方法,如调用Button类的addActionListener()方法,并以监听者对象作为实际参数。(3)监听者具有监听和处理事件的能力,它实现了接口的所有抽象方法并写出具体的方法体。如Button对象实现ActionListener接口的抽象方法actionPerformed()
25、。(4)当事件发生时,事件源将事件作为实际参数传递给监听者中负责处理这类事件的方法。这个方法被自动调用执行,事件得到处理。IT认证Java语言程序设计事件监听者种类事件监听者种类(1)ActionListener:处理动作事件,例如单击按钮。(2)ComponetListener:处理组件被隐藏、移动、尺寸移动或显示的事件。(3)ContainerListener:处理在容器中加入组件或删除组件的事件。(4)FocusListener:处理组件获得或失去焦点的事件。(5)KeyListener:监听键盘事件。(6)MouseListener:监听鼠标的单击、进入组件、退出组件或者按下鼠标的事件
26、。(7)MouseMotionListener:监听鼠标拖动或者移动的事件。(8)TextListener:监听文本值改变的事件。(9)WindowListener:处理窗口激活、失去活动窗口、最小化、不最小化、打开、关闭或者退出的事件。 IT认证Java语言程序设计事件的种类事件的种类 (1)ActionEvent:处理按钮、列表双击、单击菜单项目。 (2)ComponentEvent:处理组件被隐藏、移动、尺寸调整或者变为不可见的事件。 (3)FocusEvent:处理组件获得或者失去焦点事件。 (4)InputEvent:处理复选框和列表项单击、控件的选择和可选菜单项的选择的事件。 (5
27、)KeyEvent:处理键盘的输入。 (6)MouseEvent:处理鼠标拖动、移动、单击、按下、释放或者进入、退出组件的事件。 (7)TextEvent:处理文本区域或者文本区域的值的改动。 (8)WindowEvent:处理窗口激活、失去活动窗口、最小化、打开、关闭或者退出的事件。 IT认证Java语言程序设计事件类的继承关系事件类的继承关系 EventObjectAWTEventComponentEventItemEventAdjustmentEventActionEventTextEventInoutEventPaintEventFocusEventContainerEventWind
28、owEventKeyEventMouseEventIT认证Java语言程序设计事件及其响应事件及其响应v每一个事件类都有一个“唯一”的事件处理方法接口, 如处理鼠标事件“MouseEvent”类的对应接口为“MouseListener”接口, 处理按钮“ActionEvent”事件类的对应接口为“ActionListener”接口;v监听者向事件源注册,使监听者能够监听到并处理事件源产生的事件如ActionEvent事件,实现其接口ActionListener。如:button事件,注册监听者为handler,则:button. addActionListener(handler); clas
29、s handler implements ActionListener public void actionPerformed(ActionEvent e) IT认证Java语言程序设计事件监听者接口及实现方法事件监听者接口及实现方法 事件类 监听者接口 监听者接口所提供的事件处理方法 ActionEvent ActionListener actionPerformed(ActionEvent e) AdjustmentEvent AdjustmentListener adjustmentValueChange(AdjustmentEvent e) ItemEvent ItemListener
30、 itemStateChange(ItemEvent e) KeyEvent KeyListener keyType(KeyEvent e) keyPressed(KeyEvent e) keyReleased(KeyEvent e) MouseEvent MouseListener mouseClicked(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed(MouseEvent e) mouseReleased(MouseEvent e) mouseDragged(MouseEven
31、t e) mouseMoved(MouseEvent e) IT认证Java语言程序设计事件监听者接口及实现方法事件监听者接口及实现方法(续续)事件类 监听者接口 监听者接口所提供的事件处理方法 TextEvent TextListener textValueChange(TextEvent e) WindowEvent WindowListener windpwActivated(WindowEvent e)windpwClosed(WindowEvent e)windpwClosing(WindowEvent e)windpwDeactivated(WindowEvent e)windpw
32、Deiconifieded(WindowEvent e)windpwIconfied(WindowEvent e)windpwOpened(WindowEvent e) IT认证Java语言程序设计Java实例实例实现按钮事件实现按钮事件import java.awt.*;import java.awt.event.*;import javax.swing.ImageIcon;class Event1 extends Frame implements ActionListener Button but1,but2; Label lbl1; public Event1() super(Event
33、 Example); addWindowListener(new WindowAdapter() public void windowClosing( WindowEvent e ) System.exit( 0 ); ); initialize(); IT认证Java语言程序设计Java实例实例(续)(续)public void initialize() setSize(300,200); this.setLayout(null); but1=new Button(but1); but1.setBounds(10,40,70,25); but1.addActionListener(this)
34、; add(but1); but2=new Button(but1); but2.setBounds(105,40,70,25); but2.addActionListener(this); add(but2); lbl1=new Label(0,Label.CENTER); lbl1.setBounds(75,70,70,25); IT认证Java语言程序设计Java实例实例(续)(续) lbl1.setForeground(Color.blue); add(lbl1); setVisible(true); public void actionPerformed(ActionEvent e)
35、 if(e.getSource()=but1) int value=(new Integer(lbl1.getText().intValue(); lbl1.setText(String.valueOf(value+1); else if(e.getSource()=but2) lbl1.setText(0); public static void main(String args) new Event1(); IT认证Java语言程序设计 适配器适配器 如果使用监听者接口,这要求我们必须实现所有的接口定义方法,但是大多数情况下可能只是需要使用其中的一个或几个方法。为了实现接口的全部方法,在A
36、WT中提供了多个相应的适配器类,这些适配器类实现了响应接口的所有方法的空操作。当我们在使用时,只需要扩展适配器类并且覆盖我们需要实现的方法即可,而无需实现原来接口的所有方法。IT认证Java语言程序设计Java实例实例Adapter类类import java.awt.*;import java.awt.event.*;class Label1 extends Frame public Label1() super(Event Example); addWindowListener(new WindowAdapter() public void windowClosing( WindowEven
37、t e ) System.exit( 0 ); ); initialize(); public void initialize() this.setLayout(null); Label bl=new Label();IT认证Java语言程序设计Java实例实例(续)(续) setSize(300,200); bl.setText(“欢迎使用Java语言”); bl.setBounds(50,50,150,20); bl.setAlignment(Label.CENTER); bl.setBackground(Color.blue); bl.setForeground(Color.red);
38、add(bl); setVisible(true); public static void main(String args) new Label1(); IT认证Java语言程序设计三、三、Swing包包 在Java早期版本中,窗体、按钮等组件被列入java.awt包中。但是AWT包隐藏着一个很严重的问题,虽然它是遵循着java“一次编译,随处运用”的理念,然而它在图形组件的绘制方法却不能做到随处运用,因此用AWT包编写出来的程序有可能在不同的操作平台上显示不同的效果,在1998年推出JDK1.2版本时,javax.swing包被列入java的基础类库中。在这里给出一个AWT与swing包的
39、比较: (1)新版的swing包可能与旧版不兼容。(2)swing包是建立在AWT包的基础上,所以完全舍弃AWT包也不太可能。 (3)AWT包的运行速度比swing快。 IT认证Java语言程序设计JFrame类类 JFrame是提供给java应用程序用来放置图形用户界面的一个容器。Swing包中的JFrame类与我们讲解的AWT包中的Frame类都与创建窗口有关,JFrame类是从Frame类派生的。 IT认证Java语言程序设计JFrame类方法类方法JFrame类的构造方法 主要功能 JFrame()创建没有标题的窗口 JFrame(String title) 创建以title为标题的窗
40、口 JFrame类的方法 主要功能 Container getContentPane() 获得窗口的ContentPane组件 int getDefaultCloseOperation() 当用户关闭窗口时的默认处理方法 int setDefaultCloseOperation() 设置用户关闭窗口时发生的操作 void update(Graphics g) 引用paint()方法重绘窗口 void remove(Component component) 将窗口中指定的组件删除 JMenuBar getMenuBar() 获得窗口中的菜单栏组件 void setLayout(LayoutMan
41、ager manager) 设置窗口的布局 IT认证Java语言程序设计创建创建JFrame窗口窗口(1)创建的JFrame窗口是不可见的,要使得可 见 , 需 要 使 用 show()方 法 或setVisible(Boolean b)方法,其中setVisible中的参数b=true。(2)使用setSize方法设置窗口大小。 (3)向JFrame中添加组件时,必须先取得ContentPane,然后再使用add()方法把组件加入到ContentPane中,这与AWT包中的Frame直接使用add()方法添加组件不同。 IT认证Java语言程序设计Java实例实例JFrame窗口窗口impo
42、rt java.awt.*;import javax.swing.*;import java.awt.event.*;public class JWindow1 extends JFrame public JWindow1() super( “显示窗口程序” ); setSize(300,200); show(); public static void main(String args) JWindow1 app = new JWindow1(); IT认证Java语言程序设计WindowEvent窗口事件窗口事件窗口事件窗口事件 说明说明WINDOW_ACTIVATED 窗口被激活 WIND
43、OW_DEACTIVATED 窗口失活(当其他窗口被激活) WINDOW_CLOSED 窗口已被关闭 WINDOW_OPENED 窗口已被打开 WINDOW_CLOSING 窗口正被关闭 WINDOW_ICONIFIED 窗口被最小化为图标 WINDOW_DEICONIFIED 窗口被由图标恢复 IT认证Java语言程序设计Java实例实例窗口事件窗口事件import java.awt.*;import javax.swing.*;import java.awt.event.*;public class JWindow2 extends JFrame JFrame ff1=new JFrame
44、(); JFrame ff2=new JFrame(); public JWindow2() ff1.setSize(300,200); ff1.setTitle(显示窗口显示窗口1); ff1.setVisible(true); ff1.addWindowListener(new Win_affair(); ff2.setSize(300,200); ff2.setTitle(显示窗口显示窗口2); ff2.setVisible(false); ff2.addWindowListener(new Win_affair(); public static void main(String arg
45、s) new JWindow2(); IT认证Java语言程序设计Java实例实例(续)(续) class Win_affair extends WindowAdapter public void windowOpened(WindowEvent e) public void windowActivated(WindowEvent e) public void windowDeactivated(WindowEvent e) if(e.getSource()=ff1) ff1.setVisible(false); ff2.setVisible(true); else ff1.setVisibl
46、e(true); ff2.setVisible(false); public void windowClosing(WindowEvent e) System.exit(0); IT认证Java语言程序设计JLabel类类 swing包中的Jlabel类与前面讲解了AWT包中的Label类,它们有一个共同特点就是只能显示文字而不能够对文字进行编辑,是静态组件。但JLabel组件允许添加图像,而且当鼠标的光标停留在标签位置时,会显示一段文字提示。这些功能都使得JLabel类的功能较Label类更强。 IT认证Java语言程序设计JButton类类 在Swing中,所有按钮都是由AbstractB
47、utton类派生的,这与AWT由Button类派生是不同的,而且由AbstractButton类派生出两个组件:JButton组件和JToggleButton组件。其中JButton组件是Swing按钮,而JToggleButton组件是单选按钮和复选框的基类。 Swing中的按钮的功能较AWT中的按钮功能更加强大,包括有给按钮添加图像、使用快捷键以及设置按钮的对齐方式,还可以将多个图像分配给一个按钮以处理鼠标在按钮上的停留等。 IT认证Java语言程序设计Java实例实例标签和按钮标签和按钮import javax.swing.*;import java.awt.*;import java.
48、awt.event.*;public class Lal_but extends JFrame private JLabel label1,label2; private JButton but1,but2; public Lal_but() super(标签和按钮测试窗口); Container c=getContentPane(); c.setLayout(new FlowLayout(100,100,10); Icon icon=new ImageIcon(125.gif); label1=new JLabel(标签中有文字和图像,icon,SwingConstants.CENTER);
49、 label1.setToolTipText(这是标签 ); IT认证Java语言程序设计Java实例实例(续)(续) label1.setHorizontalTextPosition(SwingConstants.CENTER); label1.setVerticalTextPosition(SwingConstants.BOTTOM ); c.add(label1); Icon icon1=new ImageIcon(05.gif); Icon icon2=new ImageIcon(06.gif); Icon icon3=new ImageIcon(10.gif); but1=new J
50、Button(按钮1); c.add(but1); but2=new JButton(按钮2,icon2); but2.setRolloverIcon(icon3); c.add(but2); but1.addActionListener(new listener(); but2.addActionListener(new listener(); setSize(360,200 ); show(); IT认证Java语言程序设计Java实例实例(续)(续)public static void main(String args) Lal_but app = new Lal_but(); app.
51、addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) System.exit( 0 ); ); private class listener implements ActionListener public void actionPerformed( ActionEvent e ) JOptionPane.showMessageDialog( null,You pressed:+e.getActionCommand(); IT认证Java语言程序设计单选按钮和复选框单选按钮和复选框 单选按
52、钮是由JRadioButton类派生,它是指一组按钮中,用户只能选择其中一个按钮,当用户选上时,此按钮的状态为“选中或ON”,其余的都是“未选中或OFF”状态。在java中,ButtonGroup类为JRadioButton类等提供多选一功能。 复选框由JCheckBox类派生,它提供“选中/未选中”或“ON/OFF”两种状态,当用户单击复选框时改变复选框原来设置的状态; IT认证Java语言程序设计单选按钮和复选框引发事件单选按钮和复选框引发事件 复选框和单选按钮引发的事件是由ItemEvent类派生的,而此类包含了一个ITEM_STATE_CHANGE事件。ItemEvent类的主要方法有
53、: Object getItem()方法:告知用户是哪个选择项的选中状态发生变化。 int getStateChange()方法:可以使用户知道到底是选中哪个选项。 当用户选择某个单选按钮或复选框时,就会引发ItemEvent类派生事件,当事件发生时,监听者会引用ItemListener类中的itemStateChange(ItemEvent e)方法响应事件源对象状态的改变。IT认证Java语言程序设计Java实例(单选按钮和复选框)实例(单选按钮和复选框)import java.awt.*;import java.awt.event.*;import javax.swing.*;impor
54、t javax.swing.event.*;class ListCourse extends JListprotected static String courseHour= Message System 100, Communication Serve 80, java language 60, c language 60, program design 80, Database principle 80, Data structure 100, microcomputer principle 60;public ListCourse()super(courseHour);setAlignm
55、entX(Component.CENTER_ALIGNMENT); setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); class CourseSelect1 extends JFrame implements ActionListenerprivate JLabel label;private JButton button;private String str= All course hour count is ;IT认证Java语言程序设计Java实例实例(续)(续)protected ListModel li
56、stModel; protected ListSelectionModel listSelect; protected int count; protected ListCourse list; public CourseSelect1()super(students select course message);Container c =getContentPane(); c.setLayout( new FlowLayout(); Icon icon=new ImageIcon(zzdply.gif); label=new JLabel(course hour ,icon,SwingCon
57、stants.LEFT); c.add(label);list=new ListCourse(); c.add( new JScrollPane( list ); button=new JButton(count);c.add(button);button.addActionListener(this);listSelect=list.getSelectionModel();listModel=list.getModel(); setSize(230,300); show(); IT认证Java语言程序设计Java实例实例(续)(续)public void actionPerformed(Ac
58、tionEvent e) if(e.getSource()=button) countall(); public void countall() String str=,s; int total = 0; int first = listSelect.getMinSelectionIndex(); if ( first -1 ) int last = listSelect.getMaxSelectionIndex(); for (int i=first; i 200) str+=nThe study mission is very hardn; JOptionPane.showMessageD
59、ialog(null,str+n+ Total :+total,count course hour,JOptionPane.WARNING_MESSAGE); IT认证Java语言程序设计Java实例实例(续)(续)elseJOptionPane.showMessageDialog(null,str+n+ Total :+total,count course hour,JOptionPane.INFORMATION_MESSAGE ); protected float amount(String s) String a = s.substring(s.lastIndexOf( )+1); re
60、turn Integer.parseInt(a); public static void main(String args) CourseSelect1 course=new CourseSelect1(); course.addWindowListener(new WindowAdapter() public void windowClosing( WindowEvent e ) System.exit( 0 ); ); IT认证Java语言程序设计下拉列表框下拉列表框 下拉列表框是由JComboBox类派生,其特点是将所有选项折叠收藏起来,只显示最前面的那个或被用户选中的某一个。 IT认证
61、Java语言程序设计JComboBox类方法类方法JComboBox类的构造方法 主要功能 JComboBox () 创建一个空的下拉列表框对象,可以使用addItem()方法向下拉列表框对象中添加的选项 JComboBox (Vector vect) 使用向量表创建一个JComboBox对象 JComboBox (ComboBoxModel model) 从已有的model获得选项,创建JComboBox对象 JComboBox (Object items) 使用数组创建JComboBox对象 JComboBox类的方法 主要功能 void addActionListener(ActionL
62、istener e) 注册事件对象给ActionListener对象 void addItemListener(ItemListener a) 注册事件对象给ItemListener对象 void addItem(Object object) 为选项表添加选项 Object getItemAt(int index) 获得指定下标的列表项 int getItemCount() 获得列表中的选项数 int getSelectedItem() 获得当前选择的项 IT认证Java语言程序设计Java实例实例下拉列表框下拉列表框import java.awt.*;import java.awt.even
63、t.*;import javax.swing.*;public class Combo extends JFrame private JComboBox images; private JLabel label; private String names=狗 .gif,猴 .gif,虎 .gif,马.gif,鼠.gif,兔.gif; private Icon icons=new ImageIcon(names0), new ImageIcon(names1),new ImageIcon(names2), new ImageIcon(names3),new ImageIcon(names4),
64、new ImageIcon(names5),; IT认证Java语言程序设计Java实例实例(续)(续) public Combo() super(下拉列表框显示图形文件 ); Container c=getContentPane(); c.setLayout(new FlowLayout(); images=new JComboBox(names); images.setMaximumRowCount(3); images.addItemListener( new ItemListener() public void itemStateChanged(ItemEvent e) label.s
65、etIcon(iconsimages.getSelectedIndex(); ); c.add(images); label=new JLabel(icons0); c.add(label); IT认证Java语言程序设计Java实例实例(续)(续)setSize(450,380); show(); public static void main(String args) Combo app=new Combo(); app.addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) Syste
66、m.exit( 0 ); ); IT认证Java语言程序设计列表框列表框 列表框是由JList类派生,它与上面讲解的下拉列表框类似,只是下拉列表框一次只能选择一项,而列表框可以选择多项,选择多项的方法与拷贝文件类似,按住shift或Ctrl键然后移动鼠标进行选择即可。 IT认证Java语言程序设计JList类方法类方法JList类的构造方法 主要功能 JList () 创建一个空的JList对象 JList (Vector vect) 使用向量表创建一个JList对象 JList (Object items) 使用数组创建JList 对象 JList类的方法 主要功能 void addList
67、SelectionListener(ListSelectionListener e) 将事件监听者注册给JList对象 int getSelectedIndex(int i) 获得从JList对象中选取的单个选项 int getSelectedIndices(int I ) 获得从JList对象中选取的多个选项 void setVisibleRowCount(int num) 设置可见的列表选项 int getVisibleRowCount() 获得可见的列表选项值 IT认证Java语言程序设计文本框文本框 Swing中文字输入有两个类,分别是JTextField类和JTextArea类,其中
68、JTextField定义一个可以输入单行文字的矩形区域;JTextArea定义一个可以输入多行文字内容的矩形区域。 IT认证Java语言程序设计文本框事件处理文本框事件处理 JTextField类只引发ActionEvent事件,当用户在文本框中按回车键时就会引发该事件;JTextArea类引发两种事件:DocuemntEvent和UndoableEditEvent事件,当 用 户 在 文 本 区 域 修 改 文 本 内 容 时 引 发DocuemntEvent事件;当用户撤消在文本区域所作的操作时,引发UndoableEditEvent事件。 通过“对象.addActionListener(
69、this);”语句将监听者注册给它的事件源对象。当事件发生时,就会引发ActionEvent事件,要响应事件就要通过监听者的类实现ActionListener接口。在事件响应的方法中可以通过actionPerformed(ActionEvent e)方法来响应。 IT认证Java语言程序设计Java实例实例文本框文本框import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class Text_doing extends JFrame private JTe
70、xtField text1; private JTextArea t1; private JLabel lbl1,lbl2; public Text_doing() super( 文本框和文本区域测试程序 ); Container c = getContentPane(); c.setLayout(new FlowLayout(); lbl1=new JLabel(在文本框中输入文本内容); c.add(lbl1); IT认证Java语言程序设计Java实例实例(续)(续) text1 = new JTextField(15); c.add(text1); text1.addActionLis
71、tener(new handler(); String s=这是一个字符串演示文本n; t1=new JTextArea(s,11,15); c.add(t1); setSize(350,300); show(); public static void main(String args) Text_doing app = new Text_doing(); app.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit( 0 ); ); IT认证Java语言程序设计Ja
72、va实例实例(续)(续)private class handler implements ActionListener public void actionPerformed(ActionEvent e) String s=; if(t1.getLineCount()10) s=text1.getText(); t1.append(s+n); else JOptionPane.showMessageDialog(null,输入的内容太多,请删除部分内容); text1.setText(); IT认证Java语言程序设计进度条方法进度条方法JProgressBar类的构造方法 主要功能 JProgressBar () 创建一个水平进度条 JProgressBar类的方法 主要功能 void addChangeListener(ChangeListener e) 监听者注册给进度条对象,实现ChangeListener类的方法 int getMaximum() 获得进度条最大值 int getMinimum() 获得进度条最小值 int getVakue() 获得进度条当前值 int setMaximum() 设置进度条最大值 int setMinimum() 设置进度条最小值 int setVakue() 设置进度条当前值 IT认证Java语言程序设计