IT认证Java语言程序设计第11章课件_第1页
IT认证Java语言程序设计第11章课件_第2页
IT认证Java语言程序设计第11章课件_第3页
IT认证Java语言程序设计第11章课件_第4页
IT认证Java语言程序设计第11章课件_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第十一章图形用户界面第1页,共68页。一、Java的图形用户界面 awt包 AWT包提供的类大致上可以归纳成4大类: 图形界面组件,如:窗口、按钮、菜单等。 2D图形绘制组件,如:直线、圆形。 布局对象:用来安排图形界面组件的位置。 事件处理对象,用来处理图形界面组件所触发的事件。 第2页,共68页。awt包组件Java.lang.ObjectMenuComponentComponentMenuBarMenuItemContainerLabelButtonTextComponentCheckBoxMenuWindowPanelFrameDialogFileDialogTextFieldTex

2、tArea第3页,共68页。屏幕坐标位置 缺省状态下原点的位置为屏幕左上角位置(0,0)。x坐标是从左向右移动的水平距离,y坐标是从上向下移动的垂直距离 。(0,0)X坐标轴Y坐标轴第4页,共68页。建立窗口Frame类的操作 创建窗口的基本和必要操作包括以下方面: (1)可以设置窗口的大小。 (2)给窗口一个标题。 (3)在屏幕的某个位置放置窗口。 (4)显示窗口。 (5)关闭窗口。 第5页,共68页。Java实例建立窗口import java.awt.*;class Window1 static Frame fra=new Frame(这是一个窗口程序); /创建一个窗口对象fra并设置窗

3、口标题为这是一个窗口程序 public static void main(String args) fra.setBounds(0,0,300,200); /继承Component类的方法,设置窗口大小并将窗口放置在屏幕的某个位置 fra.setResizable(false); /设置窗口尺寸不可以改 fra.setState(fra.NORMAL); /设置窗口为标准状态 fra.show(); /继承Window类的show()方法,在屏幕上显示窗口 第6页,共68页。Frame类的方法Frame类的构造方法 主要功能 Frame()创建没有标题的窗口 Frame(String titl

4、e) 创建以title为标题的窗口 Frame类的方法 主要功能 Int getState() 获得Frame窗口的状态(Frame.Normal表示一般状态,Frame.ICONIFIED表示最小化状态) void setState(int state) 设置Frame窗口的状态(Frame.Normal表示一般状态,Frame.ICONIFIED表示最小化状态) String getTitle() 获得Frame窗口的标题 void setTitle(String title) 设置Frame窗口的标题 boolean isResizable() 测试Frame窗口是否可以改变大小 voi

5、d setResizable(boolean r) 设置Frame窗口是否可以改变大小 Image getIconImage() 返回窗口的最小化图标 void setIconImage(Image img) 设置窗口的最小化图标为img 第7页,共68页。标签组件 标签是用来在窗口中显示文字的组件。它是由java.awt类库中的Label类来创建。通过getText()方法获得标签所显示的文字;通过setText()方法可以改变标签内的文字。 第8页,共68页。 Label类的方法Label类的构造方法 主要功能 Label() 创建一个没有文字的标签 Label(String str) 创

6、建一个以str为文字的标签 Label(String str,int align) 创建一个以str为文字的标签,并以align为对齐方式,其中Label.LEFT、Label.CENTER、Label.RIGHT分别为居左、居中和居右 Label类的方法 主要功能 Int getAlignment() 返回标签内文字的对齐方式 Void setAlignment(int align) 设置标签内文字的对齐方式 String getText() 获得标签内的文字 Void setText(String text) 设置标签内的文字 第9页,共68页。Java实例建立标签import java.

7、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.CENTER); bl.setBackground(Color.blue); bl.setForeground(Color.red); fra.add(bl); fra.setVisible(tr

8、ue); 第10页,共68页。按钮组件 按钮提供用户快速启动某一动作的方法。通常用户在使用鼠标或键盘按下按钮时,计算机会产生一系列的动作,完成一定的操作。 第11页,共68页。Button类的方法Button类的构造方法 主要功能 Button() 创建一个没有标题的按钮 Button(String str) 创建一个以str为标题的按钮 Button类的方法 主要功能 String getLabel() 获得按钮的标题 Void setLabel(String str) 设置按钮的标题为str 第12页,共68页。Java实例建立按钮import java.awt.*;class But2

9、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,50); /设置按钮的大小 fra.add(but); fra.setVisible(true); 第13页,共68页。 文本框 文本框是用来在窗口中显示文字的矩形框,这些文字可以被用户编辑。文本框可以用来输入文字、编辑文字、并显示这些的文字

10、内容。第14页,共68页。TextField类的方法TextField类的构造方法 主要功能 TextField() 创建一个空的文本框 TextField(int columns) 创建一个空的文本框,具有指定列数 TextField(String text) 创建一个包含有指定“text”内容文本框 TextField(String text,int culumns) 创建一个包含有指定列数和“text”内容的文本框 TextField类的方法 主要功能 String getText() 获得文本框的内容 int getColumns() 获得文本框的列数 void setText(Str

11、ing text) 设置文本框的内容为text void setColumns(int columns) 设置文本框的列数 第15页,共68页。Java实例建立文本框import java.awt.*;class Text public static void main(String args) Frame fra=new Frame(创建文本框程序); TextField txt1=new TextField(50); TextField txt2=new TextField(50); fra.setBounds(0,0,300,200); fra.setLayout(null); txt1

12、.setBounds(50,50,130,20); txt2.setBounds(50,70,130,20); fra.add(txt1); fra.add(txt2); fra.setVisible(true); 第16页,共68页。 字体 在java中,各种文字都是以图形的方式输出,所以可以通过使用Font类和FontMetrics类的方法设置字型、字体大小等,输出通过Graphics类提供的输出方法输出文字内容。 第17页,共68页。Font类的方法Font类的构造方法 主要功能 Font(String fontname,int style,int size) 创建的字体名称为fontn

13、ame、style为字体样式、size为字体大小。 Font类的方法 主要功能 Font decode(String str) 获得字符串所描述的字体 String getFontName() 获得字体名称 int getStyle() 获得字体的样式 int getSize() 获得字体的大小尺寸 boolean isPlain() 测试字体是否是正常体 boolean isItalic() 测试字体是否是斜体 String toString() 将此对象转换为字符串表示 第18页,共68页。FontMetrics类的方法FontMetrics类的构造方法 主要功能 FontMetrics

14、(Font font) 创建一个FontMetrics类的对象。 FontMetrics类的方法 主要功能 Font getFont(r) 获得当前字体 int getLeading() 获得字体的Leading(字冠)值 int getAscent() 获得字体的Ascent(上差)值 int getDecent() 获得字体的Decent(下差)值 int getHeight() 获得字体的Height(高度)值 String toString() 返回对象的字符串表示 第19页,共68页。Graphics类的方法使用Graphics类设置字体 的方法: setFont(Font myfo

15、nt); 使用Graphics类中定义的方法在屏幕上输出设置好字体的文字内容 。下面是输出字符或字符串内容的Graphics类方法Graphics类的方法 主要功能 drawString(String str,int x,int y) 以x,y为起始位置,用当前的颜色和字体绘制str字符串内容 drawChars(char ch,int offset, int number,int x,int y) 从字符数组ch的第offset位置的字符开始(offset为数组下标)总共截取number个字符;以x,y为坐标的起始位置,用当前的颜色和字体绘制number个字符 drawBytes(byte

16、bt,int offset, int number,int x,int y) 从字节数组bt的第offset位置的字节开始(offset为数组下标)总共截取number个字符;以x,y为坐标的起始位置,用当前的颜色和字体绘制number个字符 第20页,共68页。Java实例设置字体import java.awt.*;public class Fonts extends Frame public Fonts() super( 设置字体程序 ); setSize( 420, 125 ); show(); public void paint( Graphics g ) g.setFont(new

17、Font(Serif,Font.BOLD,12); g.drawString(Serif 12 point bold.,20,50); g.setFont(new Font(Monospaced,Font.ITALIC,24); g.drawString(Monospaced 24 point italic.,20,70); g.setFont(new Font(SansSerif,Font.PLAIN,14); g.drawString(SansSerif 14 point plain., 20, 90 ); g.setColor(Color.red); g.setFont( new Fon

18、t(Serif,Font.BOLD+Font.ITALIC,18); g.drawString(g.getFont().getName()+ +g.getFont().getSize()+point bold italic.,20,110); public static void main( String args ) Fonts app = new Fonts(); 第21页,共68页。二、Java语言中的事件处理 当用户在图形用户界面中对特定图形界面元素单击、双击鼠标或单击键盘等操作时,通常会引发一个系统预先定义好的事件,用户只需编写程序代码对特定事件发生时做出何种响应即可。第22页,共6

19、8页。 概念 在对事件进行处理时,它是采用一种委托事件模型的形式。它的含义是将事件的处理委托给独立的对象,这样使得用户界面与程序逻辑分开,整个“委托事件模型”由产生事件的对象、事件对象和监听者对象之间的关系所组成。 产生事件的对象会在事件产生时,将与该事件相关的信息封装在一个称之为“事件对象”的对象中,并将该对象传递给监听者对象,监听者对象根据该事件对象内的信息决定适当的处理方式。监听者对象要受到事件发生的通知,必须在程序中向产生事件的对象注册,当事件产生时,产生事件的对象就会主动通知监听者对象,监听者对象根据产生该事件的对象来决定处理事件的方法。监听者对象就是用来处理事件的对象,它等候事件的

20、发生,并在事件发生时接收到通知。 第23页,共68页。事件处理(1)图形用户界面中每一个可能产生事件的组件为事件源,假如一个Button对象引发ActionEvent类代表的事件ACTION_PERFORMED;(2)如果要监听事件源上发生的事件,就要把能够处理该事件的监听者注册给事件源,如将实现了ActionListener接口的对象注册给Button对象。具体注册方法是调用事件源的相关方法,如调用Button类的addActionListener()方法,并以监听者对象作为实际参数。(3)监听者具有监听和处理事件的能力,它实现了接口的所有抽象方法并写出具体的方法体。如Button对象实现A

21、ctionListener接口的抽象方法actionPerformed()。(4)当事件发生时,事件源将事件作为实际参数传递给监听者中负责处理这类事件的方法。这个方法被自动调用执行,事件得到处理。第24页,共68页。事件监听者种类(1)ActionListener:处理动作事件,例如单击按钮。(2)ComponetListener:处理组件被隐藏、移动、尺寸移动或显示的事件。(3)ContainerListener:处理在容器中加入组件或删除组件的事件。(4)FocusListener:处理组件获得或失去焦点的事件。(5)KeyListener:监听键盘事件。(6)MouseListener:

22、监听鼠标的单击、进入组件、退出组件或者按下鼠标的事件。(7)MouseMotionListener:监听鼠标拖动或者移动的事件。(8)TextListener:监听文本值改变的事件。(9)WindowListener:处理窗口激活、失去活动窗口、最小化、不最小化、打开、关闭或者退出的事件。 第25页,共68页。事件的种类 (1)ActionEvent:处理按钮、列表双击、单击菜单项目。 (2)ComponentEvent:处理组件被隐藏、移动、尺寸调整或者变为不可见的事件。 (3)FocusEvent:处理组件获得或者失去焦点事件。 (4)InputEvent:处理复选框和列表项单击、控件的选

23、择和可选菜单项的选择的事件。 (5)KeyEvent:处理键盘的输入。 (6)MouseEvent:处理鼠标拖动、移动、单击、按下、释放或者进入、退出组件的事件。 (7)TextEvent:处理文本区域或者文本区域的值的改动。 (8)WindowEvent:处理窗口激活、失去活动窗口、最小化、打开、关闭或者退出的事件。 第26页,共68页。事件类的继承关系 EventObjectAWTEventComponentEventItemEventAdjustmentEventActionEventTextEventInoutEventPaintEventFocusEventContainerEven

24、tWindowEventKeyEventMouseEvent第27页,共68页。事件及其响应每一个事件类都有一个“唯一”的事件处理方法接口, 如处理鼠标事件“MouseEvent”类的对应接口为“MouseListener”接口, 处理按钮“ActionEvent”事件类的对应接口为“ActionListener”接口;监听者向事件源注册,使监听者能够监听到并处理事件源产生的事件如ActionEvent事件,实现其接口ActionListener。如:button事件,注册监听者为handler,则:button. addActionListener(handler); class handl

25、er implements ActionListener public void actionPerformed(ActionEvent e) 第28页,共68页。事件监听者接口及实现方法 事件类 监听者接口 监听者接口所提供的事件处理方法 ActionEvent ActionListener actionPerformed(ActionEvent e) AdjustmentEvent AdjustmentListener adjustmentValueChange(AdjustmentEvent e) ItemEvent ItemListener itemStateChange(ItemEv

26、ent 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(MouseEvent e) mouseMoved(MouseEv

27、ent e) 第29页,共68页。事件监听者接口及实现方法(续)事件类 监听者接口 监听者接口所提供的事件处理方法 TextEvent TextListener textValueChange(TextEvent e) WindowEvent WindowListener windpwActivated(WindowEvent e)windpwClosed(WindowEvent e)windpwClosing(WindowEvent e)windpwDeactivated(WindowEvent e)windpwDeiconifieded(WindowEvent e)windpwIconfi

28、ed(WindowEvent e)windpwOpened(WindowEvent e) 第30页,共68页。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 Example); addWindowListener(new WindowAdapter() pub

29、lic void windowClosing( WindowEvent e ) System.exit( 0 ); ); initialize(); 第31页,共68页。Java实例(续)public void initialize() setSize(300,200); this.setLayout(null); but1=new Button(but1); but1.setBounds(10,40,70,25); but1.addActionListener(this); add(but1); but2=new Button(but1); but2.setBounds(105,40,70,

30、25); but2.addActionListener(this); add(but2); lbl1=new Label(0,Label.CENTER); lbl1.setBounds(75,70,70,25); 第32页,共68页。Java实例(续) lbl1.setForeground(Color.blue); add(lbl1); setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource()=but1) int value=(new Integer(lbl1.getText().intValue

31、(); lbl1.setText(String.valueOf(value+1); else if(e.getSource()=but2) lbl1.setText(0); public static void main(String args) new Event1(); 第33页,共68页。 适配器 如果使用监听者接口,这要求我们必须实现所有的接口定义方法,但是大多数情况下可能只是需要使用其中的一个或几个方法。为了实现接口的全部方法,在AWT中提供了多个相应的适配器类,这些适配器类实现了响应接口的所有方法的空操作。当我们在使用时,只需要扩展适配器类并且覆盖我们需要实现的方法即可,而无需实现

32、原来接口的所有方法。第34页,共68页。Java实例Adapter类import java.awt.*;import java.awt.event.*;class Label1 extends Frame public Label1() super(Event Example); addWindowListener(new WindowAdapter() public void windowClosing( WindowEvent e ) System.exit( 0 ); ); initialize(); public void initialize() this.setLayout(nul

33、l); Label bl=new Label();第35页,共68页。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); add(bl); setVisible(true); public static void main(String args) new Label1(); 第36页,共68页。三、Swi

34、ng包 在Java早期版本中,窗体、按钮等组件被列入java.awt包中。但是AWT包隐藏着一个很严重的问题,虽然它是遵循着java“一次编译,随处运用”的理念,然而它在图形组件的绘制方法却不能做到随处运用,因此用AWT包编写出来的程序有可能在不同的操作平台上显示不同的效果,在1998年推出JDK1.2版本时,javax.swing包被列入java的基础类库中。在这里给出一个AWT与swing包的比较: (1)新版的swing包可能与旧版不兼容。(2)swing包是建立在AWT包的基础上,所以完全舍弃AWT包也不太可能。 (3)AWT包的运行速度比swing快。 第37页,共68页。JFram

35、e类 JFrame是提供给java应用程序用来放置图形用户界面的一个容器。Swing包中的JFrame类与我们讲解的AWT包中的Frame类都与创建窗口有关,JFrame类是从Frame类派生的。 第38页,共68页。JFrame类方法JFrame类的构造方法 主要功能 JFrame()创建没有标题的窗口 JFrame(String title) 创建以title为标题的窗口 JFrame类的方法 主要功能 Container getContentPane() 获得窗口的ContentPane组件 int getDefaultCloseOperation() 当用户关闭窗口时的默认处理方法 i

36、nt setDefaultCloseOperation() 设置用户关闭窗口时发生的操作 void update(Graphics g) 引用paint()方法重绘窗口 void remove(Component component) 将窗口中指定的组件删除 JMenuBar getMenuBar() 获得窗口中的菜单栏组件 void setLayout(LayoutManager manager) 设置窗口的布局 第39页,共68页。创建JFrame窗口(1)创建的JFrame窗口是不可见的,要使得可见,需要使用show()方法或setVisible(Boolean b)方法,其中setVi

37、sible中的参数b=true。(2)使用setSize方法设置窗口大小。 (3)向JFrame中添加组件时,必须先取得ContentPane,然后再使用add()方法把组件加入到ContentPane中,这与AWT包中的Frame直接使用add()方法添加组件不同。 第40页,共68页。Java实例JFrame窗口import java.awt.*;import javax.swing.*;import java.awt.event.*;public class JWindow1 extends JFrame public JWindow1() super( “显示窗口程序” ); setS

38、ize(300,200); show(); public static void main(String args) JWindow1 app = new JWindow1(); 第41页,共68页。WindowEvent窗口事件窗口事件 说明WINDOW_ACTIVATED 窗口被激活 WINDOW_DEACTIVATED 窗口失活(当其他窗口被激活) WINDOW_CLOSED 窗口已被关闭 WINDOW_OPENED 窗口已被打开 WINDOW_CLOSING 窗口正被关闭 WINDOW_ICONIFIED 窗口被最小化为图标 WINDOW_DEICONIFIED 窗口被由图标恢复 第4

39、2页,共68页。Java实例窗口事件import java.awt.*;import javax.swing.*;import java.awt.event.*;public class JWindow2 extends JFrame JFrame ff1=new JFrame(); JFrame ff2=new JFrame(); public JWindow2() ff1.setSize(300,200); ff1.setTitle(显示窗口1); ff1.setVisible(true); ff1.addWindowListener(new Win_affair(); ff2.setSi

40、ze(300,200); ff2.setTitle(显示窗口2); ff2.setVisible(false); ff2.addWindowListener(new Win_affair(); public static void main(String args) new JWindow2(); 第43页,共68页。Java实例(续) class Win_affair extends WindowAdapter public void windowOpened(WindowEvent e) public void windowActivated(WindowEvent e) public v

41、oid windowDeactivated(WindowEvent e) if(e.getSource()=ff1) ff1.setVisible(false); ff2.setVisible(true); else ff1.setVisible(true); ff2.setVisible(false); public void windowClosing(WindowEvent e) System.exit(0); 第44页,共68页。JLabel类 swing包中的Jlabel类与前面讲解了AWT包中的Label类,它们有一个共同特点就是只能显示文字而不能够对文字进行编辑,是静态组件。但J

42、Label组件允许添加图像,而且当鼠标的光标停留在标签位置时,会显示一段文字提示。这些功能都使得JLabel类的功能较Label类更强。 第45页,共68页。JButton类 在Swing中,所有按钮都是由AbstractButton类派生的,这与AWT由Button类派生是不同的,而且由AbstractButton类派生出两个组件:JButton组件和JToggleButton组件。其中JButton组件是Swing按钮,而JToggleButton组件是单选按钮和复选框的基类。 Swing中的按钮的功能较AWT中的按钮功能更加强大,包括有给按钮添加图像、使用快捷键以及设置按钮的对齐方式,还

43、可以将多个图像分配给一个按钮以处理鼠标在按钮上的停留等。 第46页,共68页。Java实例标签和按钮import javax.swing.*;import java.awt.*;import java.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(10

44、0,100,10); Icon icon=new ImageIcon(125.gif); label1=new JLabel(标签中有文字和图像,icon,SwingConstants.CENTER); label1.setToolTipText(这是标签 ); 第47页,共68页。Java实例(续) label1.setHorizontalTextPosition(SwingConstants.CENTER); label1.setVerticalTextPosition(SwingConstants.BOTTOM ); c.add(label1); Icon icon1=new Image

45、Icon(05.gif); Icon icon2=new ImageIcon(06.gif); Icon icon3=new ImageIcon(10.gif); but1=new JButton(按钮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(); 第48页,共

46、68页。Java实例(续)public static void main(String args) Lal_but app = new Lal_but(); app.addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) System.exit( 0 ); ); private class listener implements ActionListener public void actionPerformed( ActionEvent e ) JOptionPane.showMessag

47、eDialog( null,You pressed:+e.getActionCommand(); 第49页,共68页。单选按钮和复选框 单选按钮是由JRadioButton类派生,它是指一组按钮中,用户只能选择其中一个按钮,当用户选上时,此按钮的状态为“选中或ON”,其余的都是“未选中或OFF”状态。在java中,ButtonGroup类为JRadioButton类等提供多选一功能。 复选框由JCheckBox类派生,它提供“选中/未选中”或“ON/OFF”两种状态,当用户单击复选框时改变复选框原来设置的状态; 第50页,共68页。单选按钮和复选框引发事件 复选框和单选按钮引发的事件是由Ite

48、mEvent类派生的,而此类包含了一个ITEM_STATE_CHANGE事件。ItemEvent类的主要方法有: Object getItem()方法:告知用户是哪个选择项的选中状态发生变化。 int getStateChange()方法:可以使用户知道到底是选中哪个选项。 当用户选择某个单选按钮或复选框时,就会引发ItemEvent类派生事件,当事件发生时,监听者会引用ItemListener类中的itemStateChange(ItemEvent e)方法响应事件源对象状态的改变。第51页,共68页。Java实例(单选按钮和复选框)import java.awt.*;import java

49、.awt.event.*;import javax.swing.*;import 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

50、ListCourse()super(courseHour);setAlignmentX(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 ;第52页,共68页。J

51、ava实例(续)protected ListModel listModel; 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 JLa

52、bel(course hour ,icon,SwingConstants.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(); 第53页,共68页。Java实例(续)public vo

53、id actionPerformed(ActionEvent 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; JOp

54、tionPane.showMessageDialog(null,str+n+ Total :+total,count course hour,JOptionPane.WARNING_MESSAGE); 第54页,共68页。Java实例(续)elseJOptionPane.showMessageDialog(null,str+n+ Total :+total,count course hour,JOptionPane.INFORMATION_MESSAGE ); protected float amount(String s) String a = s.substring(s.lastIndex

55、Of( )+1); return 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 ); ); 第55页,共68页。下拉列表框 下拉列表框是由JComboBox类派生,其特点是将所有选项折叠收藏起来,只显示最前面的那个或被用户选中的某一个。 第

56、56页,共68页。JComboBox类方法JComboBox类的构造方法 主要功能 JComboBox () 创建一个空的下拉列表框对象,可以使用addItem()方法向下拉列表框对象中添加的选项 JComboBox (Vector vect) 使用向量表创建一个JComboBox对象 JComboBox (ComboBoxModel model) 从已有的model获得选项,创建JComboBox对象 JComboBox (Object items) 使用数组创建JComboBox对象 JComboBox类的方法 主要功能 void addActionListener(ActionListe

57、ner e) 注册事件对象给ActionListener对象 void addItemListener(ItemListener a) 注册事件对象给ItemListener对象 void addItem(Object object) 为选项表添加选项 Object getItemAt(int index) 获得指定下标的列表项 int getItemCount() 获得列表中的选项数 int getSelectedItem() 获得当前选择的项 第57页,共68页。Java实例下拉列表框import java.awt.*;import java.awt.event.*;import java

58、x.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), new ImageIcon(name

59、s5),; 第58页,共68页。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.setIcon(iconsimages.getSelec

60、tedIndex(); ); c.add(images); label=new JLabel(icons0); c.add(label); 第59页,共68页。Java实例(续)setSize(450,380); show(); public static void main(String args) Combo app=new Combo(); app.addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) System.exit( 0 ); ); 第60页,共68页。列表框 列表框是由J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论