图形用户界面_第1页
图形用户界面_第2页
图形用户界面_第3页
图形用户界面_第4页
图形用户界面_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

1、Java语言程序设计图形用户界面设计n 设计原则n 容器与布局n 自定义成分n 标准组件n 事件处理JAVA语言程序设计清华大学 刘宝林3图形用户界面(GUI)l字符界面 用字符串、命令行的方式与用户交互l图形用户界面:Graphics User Interface 用直观的图形来表示数据 用直观、方便的GUI标准组件来接收命令 GUI组成成分的标准化使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户。JAVA语言程序设计清华大学 刘宝林4用户界面设计原则l控制权在用户l界面与操作的风格一致性l宽容

2、(容错)性l简洁与美观并重JAVA语言程序设计清华大学 刘宝林5图形用户界面简介l图形用户界面的构成 容器:布局、安排 标准组件 用户自定义成分l设计&实现图形用户界面的工作 创建GUI各组成成分,并安排从属位置关系,根据具 体需要对其进行排序,构成完整外观。 定义GUI各成分对不同事件的响应,实现与用户的交 互功能。JAVA语言程序设计清华大学 刘宝林6界面构成容器用户自定义成分v 容器是用来组织其他界面成分和元素的单元。一般一个图 形用户界面对应一个复杂容器。如一窗口v 标准组件是图形用户界面的最小单位,它里面不再包含其他 的成分。如单选按钮,文本框,菜单v 用户自定义成分是指编程

3、人员根据用户需要设计一些用户 自定义的图形界面成分。如绘制几何图形 标准组件JAVA语言程序设计清华大学 刘宝林7界面元素l容器是用来组织其他界面成分和元素的单元。 可以形成容器的层次,构筑复杂结构 Window(Frame、Applet、Dialog )l组件是图形用户界面的基本单位,它里面不再包含其他的成分。 GUI组件是图形用户界面标准化的结果。常用的组件有: 选择类的: 单选按钮、复选按钮、下拉列表; 文字处理类的: 文本框、文本区域 命令类的: 按钮、菜单等 GUI组件的作用是完成与用户的交互。包括接收用户的 命令、文本或选择输入,向用户显示一段文本或一个图 形等。JAVA语言程序设

4、计清华大学 刘宝林8界面元素l使用组件通常需要如下的步骤 创建某组件类的对象,指定其大小等属性。 使用某种布局策略,将该组件对象加入到某个容器中的 某指定位置处。 将该组件对象注册给它所能产生的事件对应的事件监听 者,重载事件的处理方法,实现利用该组件对象与用户 交互的功能。l用户自定义成分 显示文字、绘制图形、显示图象 不能像标准组件一样被系统识别和承认,只起装饰作用。 不能响应用户的动作,不具有交互功能。JAVA语言程序设计清华大学 刘宝林9图形用户界面(GUI)lJava的图形用户界面编程: 为方便图形用户界面的开发,设计了专门的类库来生成各 种标准图形界面元素和处理图形界面的各种事件,

5、这个用 来生成图形界面的类库就是java.awt包。AWT是abstract window toolkit抽象窗口工具集的缩写。 AWT类库中的各种操作被定义在一个窗口中进行,开发人 员用AWT开发出的图形用户界面可以适用于所有的平台系 统。JAVA语言程序设计清华大学 刘宝林10AWT包lAbstract Window Toolkit(抽象窗口工具集) 提供各种构成GUI的标准构件。 AWT类库中的各种操作被定义在一个窗口中进行的。 抽取不同软硬件平台中所实现的窗口的公共特性。 依赖于具体平台系统实现:显示效果可能不同。l提供与机器无关的基本GUI标准组件 选择类组件:单选按钮、复选框、下拉

6、选单、列表框 文字处理类组件:标签、文本框、文本域。 命令类组件:按钮、工具栏、菜单等。JAVA语言程序设计清华大学 刘宝林11从一个简单窗口开始l创建GUI应用程序 Frame必不可少 它是带标题的顶层窗口,是 构建应用程序图形界面的基 础,它为应用程序实现人机 交互提供了对话窗口l先来建一个空的窗口应用: Empty.java 注意:一定要处理关闭窗口 的事件JAVA语言程序设计清华大学 刘宝林12import java.awt.*; /must import to use GUI /must extends Frame in an applicationpublic class Empt

7、y extends Frame / 暂时采用1.0.2的事件处理方法,关闭窗口 public boolean handleEvent(Event evt) /根据Event类的对象evt的id值来判断发生事件的种类 if(evt.id= =Event.WINDOW_DESTROY) System.exit(0); / return的返回值表示将余下的事件处理交给父类的handleEvent( ) / 处理,从而保证对事件的正常处理 return super.handleEvent(evt); public static void main(String args)Frame f=new Emp

8、ty();f.setSize(300,200);f.setVisible(true); JAVA语言程序设计清华大学 刘宝林13绘制用户自定义成分l用户自定义成分属于构成GUI的非标准部分 无法响应用户事件 一般仅仅起背景装饰、输出效果突出的作用lJava中的用户自定义成分 显示文字 绘制图形 显示图片JAVA语言程序设计清华大学 刘宝林14绘制用户自定义成分l一般在容器中(窗口)或画布上绘制。l利用Java.awt类库中的类及其方法绘制用户自定义的 图形界面成分。 lGraphics类包含很多绘制图形和文字的方法 。l首先要获得Graphics类的实例,然后利用其方法绘制。lGraphics

9、类的实例一般作为相关方法的参数传递进来: paint(Graphics g)lJava程序图形界面的 坐标设置原点(0,0)X轴Y轴JAVA语言程序设计清华大学 刘宝林15绘制图形及其相关方法ldrawLine(x1,y1,x2,y2) /直线ldrawRect(x,y,w,h) /矩形ldrawOval(x,y,w,h) /圆或椭圆lfillOval(x,y,w,h) /实心圆或椭圆ldrawPolygon(X坐标数组,Y坐标数组,顶点个数) /画多边形ldrawArc (x,y,w,h,开始角度,弧度角度) lsetColor(Color c) /设置颜色lsetFont(Font f)

10、/设置字体lgetColor()lgetFont()JAVA语言程序设计清华大学 刘宝林16绘制图形及其相关方法l从(x1,y1)到(x2,y2)画直线 drawLine(x1,y1,x2,y2) 参数均为intl画弧线drawArc(x,y,w,h,) 参数均为int x,y为绘制弧形的左上角的坐标; w,h为弧形的宽度和高 度;为弧形的起始角,为弧形的弧度, 为正,表顺 时针方向; 为负,表逆时针方向。l以(x,y)为左上角、w为宽度、h为高度画矩形 drawRect(x,y,w,h) 参数均为intlfillRect(x,y,w,h)、clearRect(x,y,w,h)JAVA语言程序

11、设计清华大学 刘宝林17绘制图形及其相关方法l画圆或椭圆 drawOval(x,y,w,h) x,y为绘制圆或椭圆的左上角的坐标,w,h确定了椭圆的 宽度和高度l画实心圆或椭圆 fillOval(x,y,w,h)l画多边形 drawPolygon(X坐标数组,Y坐标数组,顶点个数)JAVA语言程序设计清华大学 刘宝林18绘制图形及其相关方法例子: sanmao.java10 画人像 JAVA语言程序设计清华大学 刘宝林19 /画头部,椭圆方法drawOvalg.setColor(Color.black); /setColor用来设置要使用的颜色 g.drawOval(40,40,120,150

12、);./画头发,直线方法drawLine,画弧方法drawArcg.drawLine(100,10,100,60);g.drawArc(110,20,100,80,90,90);./画嘴巴,填充画弧方法fillArcg.fillArc(60,130,80,40,180,180);./画耳朵,填充椭圆方法fillOval,复制图形方法copyAreag.fillOval(25,92,15,30);g.copyArea(25,92,15,30,136,0); /拷贝某区域的图形至另一区域./画身体,多边形方法fillPolygong.fillPolygon(polygon_x,polygon_y,

13、polygon_pt_num);JAVA语言程序设计清华大学 刘宝林20显示文字l字体显示效果类:Font 一个Font类的对象表示了一种字体显示效果,包括字体类型、风格和字号。 Font mf = new Font(String 字体,int 风格,int 字号); 字体:TimesRoman, Courier, Arial等 风格:三个常量lFont.PLAIN, Font.BOLD, Font.ITALIC 字号:字的大小(磅数) 设置当前使用的字体:setFont(Font fn) 获取当前使用的字体:getFont()l例:UseFonts.javaJAVA语言程序设计清华大学 刘宝

14、林21String FontName = TimesRoman,Courier,Arial;int FontStyle = Font.PLAIN, Font. BOLD, Font.ITALIC;String StyleName = PLAIN, BOLD, ITALIC ;public void paint( Graphics g) for ( int i=0; i3; i+) for ( int j=0; j1) /双击时清除向量中各点m_vLocs.removeAllElements(); else /单击时在向量中增加一点m_vLocs.addElement(e.getPoint();

15、 repaint(); /重新绘制一次 class move extends MouseMotionAdapter /鼠标移动监听者类public void mouseMoved(MouseEvent e) /响应移动 m_CursorLoc = new Point(e.getX(),e.getY(); repaint(); /重新绘制一次 JAVA语言程序设计清华大学 刘宝林71事件类lActionEvent类:属于动作事件,包括:点击按钮; 双击一个列表中的选项;选择菜单项;在文本框中 按回车。最典型的例子是:鼠标点击按钮所产生的 事件,经ActionListener接口触发一连串动作,再

16、由 actionPerformed()方法完成这些动作。 e.getSource() 返回事件发生的对象(名) e.getActionCommand() 返回按扭名(动作事件的命令字符串)lActionListener 接口 public void actionPerformed(ActionEvent e)JAVA语言程序设计清华大学 刘宝林72图形用户界面例import java.awt.*;import java.awt.event.*;public class a public static void main(String args) MyFrame form1 = new MyFr

17、ame(); class MyFrame extends Frame MyFrame() super(窗口标题); setSize(200,100); setFont(new Font(TimesRoman,Font.BOLD,20);JAVA语言程序设计清华大学 刘宝林73图形用户界面例 setLayout(new FlowLayout(); Button b = new Button(close); add(b); b.addActionListener(new Bprocess(); setVisible(true); class Bprocess implements ActionLi

18、stener public void actionPerformed(ActionEvent e) System.exit(0); JAVA语言程序设计清华大学 刘宝林74监听者类l某个类可以兼职也可以专职做这件事(实现监听者 接口)。l一个类若实现一个接口,必须实现接口的全部方法。 例如:ActionListener接口只有一个方法: void actionPerformed(ActionEvent e) l实现接口的类可以是: 一般类 内部类 匿名类3 4 内部类5 匿名类JAVA语言程序设计清华大学 刘宝林75事件处理有关问题l有哪些事件类 (java.awt.event) ? l每个事

19、件类的监听者接口?l每个监听者接口规定的方法?l多方法的监听者接口的适配器(实现接口的抽象类) 是什么?l组件的事件注册(委托)方法?JAVA语言程序设计清华大学 刘宝林76窗口事件l关闭窗口框时引发 WindowEvent事件l注册addWindowListener(new Wclose();l定义监听者类 class Wclose implements WindowListener public void windowClosing(WindowEvent e) System.exit(0); lWindowListener类有7 个方法,必须都实现lWindowAdapter 接收窗口事

20、件的抽象适配器类, 用空内容实现了WindowListener接口的所有方法 class Wclose extends WindowAdapter JAVA语言程序设计清华大学 刘宝林77ActionEvent动作事件l引发原因: 单击按扭,双击列表框中选项,选择菜单项,文本框中 的回车l事件监听接口:ActionListenerl接口方法: actionPerformed(ActionEvent e)l组件注册该事件方法: addActionListener(监听者) JAVA语言程序设计清华大学 刘宝林78TextEvent文本事件l引发原因: 文本框或文本区域内容改变l事件监听接口:Te

21、xtListenerl接口方法: textValueChanged(TextEvent e)l组件注册该事件方法: addTextListener(监听者) JAVA语言程序设计清华大学 刘宝林79ItemEvent选择事件l引发原因: 改变列表框中的选中项 改变复选框选中状态 改变下拉选单的选中项l事件监听接口:ItemListenerl接口方法: itemStateChanged(ItemEvent e)l组件注册该事件方法: addItemListener(监听者) JAVA语言程序设计清华大学 刘宝林80AdjustmentEvent调整事件l引发原因: 操作滚动条改变滑块位置l事件监

22、听接口:AdjustmentListenerl接口方法: adjustmentValueChanged(AdjustmentEvent e)l组件注册该事件方法: addAdjustmentListener(监听者) JAVA语言程序设计清华大学 刘宝林81KeyEvent事件l引发原因: 敲完键(KEY-TYPED) 按下键 (KEY-PRESSED) 释放键 (KEY-RELEASE)l事件监听接口:KeyListenerl接口方法: keyPressed(KeyEvent e) 键已被按下时调用 keyReleased(KeyEvent e) 键已被释放时调用 keyTyped(KeyE

23、vent e) 键已被敲完时调用lKeyEvent方法:char ch = e.getKeyChar(); l事件监听适配器(抽象类)KeyAdapterl组件注册该事件方法: addKeyListener(监听者) JAVA语言程序设计清华大学 刘宝林82MouseEvent事件l引发原因: (鼠标作用在一个组件上) 鼠标事件: 鼠标键按下,鼠标键抬起,单击鼠标 , 鼠标光标进入一个组件,鼠标光标离开一个组件。 鼠标移动事件: 鼠标移动,鼠标拖动 l鼠标事件监听接口1: MouseListener 接受鼠标事件l该接口方法: mouseClicked(MouseEvent e) mouseE

24、ntered(MouseEvent e) 鼠标光标进入一个组件 mouseExited(MouseEvent e) 鼠标光标离开一个组件 JAVA语言程序设计清华大学 刘宝林83MouseEvent事件l鼠标事件监听适配器(抽象类)MouseAdapterl鼠标事件监听接口2: MouseMotionListener 接受鼠标移动事件l该接口方法: mouseMoved(MouseEvent e) 鼠标光标在组件上移动 mouseDragged(MouseEvent e) 用鼠标拖动一个组件l鼠标移动事件监听适配器 MouseMotionAdapterl组件注册鼠标事件方法: addMouse

25、Listener(监听者) l组件注册鼠标移动事件方法: addMouseMotionListener(监听者) JAVA语言程序设计清华大学 刘宝林84MouseEvent事件lMouseEvent方法 e.getClickCount() =1 单击 =2 双击 Point e.getPoint() 取鼠标光标位置 int e.getX() int e.getY() 取鼠标光标位置 e.getModifiers() = e.BUTTON1_MASK 鼠标左键 = e.BUTTON3_MASK 鼠标右键6 - 鼠标事件 JAVA语言程序设计清华大学 刘宝林85WindowEvent事件l引发原

26、因: 有关窗口操作引发的事件l事件监听接口WindowListenerl接口方法 windowActivated(WindowEvent e) 激活窗口 windowClosed(WindowEvent e) 关闭窗口 windowClosing(WindowEvent e) 窗口正在被关闭(试图利用窗口关闭按钮关闭窗口) windowDeactivated(WindowEvent e) 本窗口成为非活动窗口JAVA语言程序设计清华大学 刘宝林86WindowEvent事件 windowDeiconified(WindowEvent e) 窗口从最小化恢复为普通窗口 windowIconifi

27、ed(WindowEvent e) 窗口变为最小化图标 windowOpened(WindowEvent e) 窗口被打开成为可见时l接口适配器 WindowAdapterl注册事件方法 addWindowListenerJAVA语言程序设计清华大学 刘宝林87ComponentEvent 事件l引发原因: 当组件移动、改变大小、改变可见性时引发l事件监听接口:ComponentListenerl接口方法: componentHidden(ComponentEvent e) 组件隐藏 componentMoved(ComponentEvent e) 组件移动 componentResized(

28、ComponentEvent e) 组件改变大小 componentShown(ComponentEvent e) 组件变为可见l接口适配器 ComponentAdapterl组件注册该事件方法: addComponentListenerJAVA语言程序设计清华大学 刘宝林88ContainerEvent 事件l引发原因: 当容器内增加或移走组件时引发l事件监听接口:ContainerListenerl接口方法 componentAdded(ContainerEvent e) 容器内加入组件 componentRemoved(ContainerEvent e) 从容器中移走 组件l接口适配器

29、ContainerAdapterl容器注册该事件方法: addContainerListenerJAVA语言程序设计清华大学 刘宝林89GUI标准组件lLabel(标签) 构造方法 Label myl = new Label(“标签内容”); Label a = new Label(“information”); Label a = new Label(“information”, Label.CENTER); 方法 a.setText(“新内容”); 设置标签内容 String a.getText() 读取标签内容lButton(按钮) Button myB1 = new Button();

30、 Button myB2 = new Button(“Cancel”);JAVA语言程序设计清华大学 刘宝林90GUI标准组件lCheckbox(检测盒) 创建时指定检测盒的标签 Checkbox cb1 = new Checkbox (); Checkbox cb2 = new Checkbox (“registered”); Checkbox cb3 = new Checkbox (“registered”, true); Checkbox cb4 = new Checkbox (“registered”, true, group); 获取和设置检测盒的状态 cb.setState(tru

31、e); boolean b=cb.getState();JAVA语言程序设计清华大学 刘宝林91Checkbox组件l构造方法 Checkbox(String label) Checkbox(String label, boolean state) Checkbox(String label, boolean state, CheckboxGroup group ) l方法: boolean getState() setState(boolean state)JAVA语言程序设计清华大学 刘宝林92GUI标准组件lCheckboxGroup(单选按钮组) 单选按钮组是一组Checkbox的集合

32、,是将一组 Checkbox 按扭组成单选按扭组件 首先创建CheckboxGroup,再加入单个按钮l方法: Checkbox getSelectedCheckbox() 取得目前选取的复选框对象 setSelectedCheckbox(Checkboxbox) 设定目前选取的复选框对象JAVA语言程序设计清华大学 刘宝林93CheckboxGroup组件l例: setLayout(new GridLayout(3, 1); CheckboxGroup cbg = new CheckboxGroup(); Checkbox ck1 = new Checkbox(“one”, true, cb

33、g ); Checkbox ck2 = new Checkbox(“two”, false, cbg ); Checkbox ck3 = new Checkbox(“three”, false, cbg ); add(ck1); add(ck2); add(ck3); 把CheckboxGroup加入容器时需要把其中的每个复选按钮 逐个加入到容器中,而不能使用CheckboxGroup对象一次 性地加入。JAVA语言程序设计清华大学 刘宝林94TextField行编辑框组件l构造方法(String, int) TextField f1 = new TextField(30); TextFiel

34、d f1 = new TextField(“abc”,30); 建30个字符宽的行编辑框l方法: String getText() 读文本框内容 setText(“abc”) 设置编辑框内容 setEchoChar(char c) 设置回显字符lTextComponent 方法: setEditable(false); selectAll() 7 计算器 JAVA语言程序设计清华大学 刘宝林95TextArea组件l构造方法(String, int , int) TextArea t1 = new TestArea(10,45); 建10行、45列的文本区域 TextArea t1 = new

35、 TestArea(“abc”,10,45); TextArea t1 = new TestArea(“abc”,10,45,滚动条);l滚动条指定 SCROLLBARS_BOTH SCROLLBARS_HORIZONTAL_ONLY SCROLLBARS_VERTICAL_ONLY SCROLLBARS_NONEl方法 append(String str) 追加文本JAVA语言程序设计清华大学 刘宝林96List 列表框l首先创建List对象,再调用add ()方法加入List列表 的各选项。列表可以实现多选多l构造方法 List(int rows, boolean multipleMode

36、) rows 显示行数 ; multipleMode 是否允许多选l方法: list1.add (“class A”); list1.add (“class B”); list1.add (“class C” , 0); 指定加入选项位置JAVA语言程序设计清华大学 刘宝林97List 列表框l方法 int getSelectedIndex() 取被选项索引 int getSelectedIndexes() 取被选项索引(多选) String getSelectedItem() 取被选项 String getSelectedItems() 取被选项(多选) void select(int in

37、dex) 选中指定的项 String getItem(int index) 按索引号取出该项 int getItemCount() 取出项数 String getItems( ) 取出所有的项 JAVA语言程序设计清华大学 刘宝林98Choice下拉选单l下拉选单提供了多选一机制。l创建下拉选单包括创建下拉选单对象和添加选项两 个步骤 例: Choice ColorChooser = new Choice(); ColorChooser.add(Green); ColorChooser.add(Red); ColorChooser.add(Blue); String getSelectedIt

38、em() GreenJAVA语言程序设计清华大学 刘宝林99Scrollbar 滚动条l构造方法 mySlider = new Scrollbar(Scrollbar.HORIZONTAL , 0 , 1 , 0 , Integer.MAX_VALUE); 滚动条方向 滑块初始位置 滑块尺寸 滚动槽最小值 滚动槽最大值l方法 int getValue() 返回滑块当前位置 setUnitIncrement(1); 设置单位增量(点按两端箭头) setBlockIncrement(50); 设置块增量(点按滚动槽)8 滚动条 JAVA语言程序设计清华大学 刘宝林100菜单l菜单须依附于一个实现了

39、MenuContainer接口 的对象:Frame 构建菜单结构:创建菜单的步骤 创建菜单条(MenuBar) 创建菜单(Menu),加入相应菜单条 创建菜单项(MenuItem),加入相应菜单 使菜单条依附于拥有它的对象:setMenuBar()l编写响应菜单操作的代码(ActionEvent)JAVA语言程序设计清华大学 刘宝林101菜单l创建菜单条(MenuBar) MenuBar m_MenuBar = new MenuBar(); l创建菜单(Menu),加入菜单条 Menu menuFile = new Menu(“File”); /创建菜单 m_MenuBar.add(menuF

40、ile); /将菜单加入菜单条l创建菜单项(MenuItem) , 并加入相应菜单 MenuItem f1= new MenuItem(“Open”), /创建各菜单项 MenuItem f2 = new MenuItem(Close), menuFile.add(f1); /加入菜单 menuFile.add(f2);l将菜单条放入frame: myFrame.setMenuBar(m_MenuBar); l编写响应菜单操作的代码(ActionEvent) 9 菜单 JAVA语言程序设计清华大学 刘宝林102例:MenuFrame.javaclass MenuFrame extends Fr

41、ame Label lb=new Label(“here comes command”); /模拟菜单命令 MenuBar m_MenuBar=new MenuBar(); /创建菜单条 Menu menuFile = new Menu(“File”); /创建菜单 MenuItem file=new MenuItem(“Open”), /创建各菜单项new MenuItem(Close),new MenuItem(Exit) ; MenuFrame() m_MenuBar.add(menuFile); /把菜单加入菜单条menuFile.add(file0); /把各菜单项加入菜单menuF

42、ile.add(file1);menuFile.add(file2);setMenuBar(m_MenuBar); /把菜单条加入FrameJAVA语言程序设计清华大学 刘宝林103setLayout(new FlowLayout();add(lb); /加入Label, 用于输出菜单项命令ActionListener ml=new ML();for(int i=0;i3;i+) /为每个菜单项注册监听者 filei.addActionListener(ml); /此例多个菜单项 /对应一个监听者, 但实际编程时建议使用一对一结构addWindowListener(new WL(); clas

43、s ML implements ActionListener /Action事件监听者类public void actionPerformed(ActionEvent e) lb.setText(e.getActionCommand(); /输出菜单命令 JAVA语言程序设计清华大学 刘宝林104文件对话框FileDialog(Frame parent, String title, int mode)l parent 对话框所属窗体l title 对话框标题l mode 对话框模式 FileDialog.LOAD 打开文件 FileDialog.SAVE 保存文件JAVA语言程序设计清华大学

44、刘宝林105文件对话框 class MyFrame extends Frame MyFrame getMyFrameIns() return this; 子类方法代码片段: FileDialog f = new FileDialog( getMyFrameIns(),open,FileDialog.SAVE); f.setVisible(true); String fname = f.getDirectory() + f.getFile() ; ig = getToolkit().getImage(fname);JAVA语言程序设计清华大学 刘宝林106JAVA语言程序设计清华大学 刘宝林10

45、7Swing组件lSwing Swing 是AWT 的扩展, 它提供了更强大和更灵活的组件集合。除了我们已经熟悉的组件如按钮、复选框和标签外,Swing 还包括许多新的组件,如选项板、滚动窗口、树、表格。许多一些开发人员已经熟悉的组件, 如按钮, 在Swing 都增加了新功能。而且,按钮的状态改变时按钮的图标也可以随之改变。 与AWT 组件不同,Swing 组件实现不包括任何与平台相关的代码。Swing 组件是纯Java 代码,因此与平台无关。一般用轻量级(lightweight )这个术语描述这类组件。JAVA语言程序设计清华大学 刘宝林108Swing组件类描述AbstractButton

46、 按钮的抽象类ButtonGroup 封装一组互斥的按钮ImageIcon 封装图标JApplet Swing 版的Applet JButton Swing 的按钮类JCheckBox Swing 的复选框类JComboBox 封装组合框(下拉式菜单和文本框的组合). JLabel Swing 版的标签JRadioButton Swing 版的单选按钮JScrollPane 封装滚动窗口JTabbedPane 封装选项窗口JTable 封装表格控件JTextField Swing 版的文本域Jtree 封装树型控件JAVA语言程序设计清华大学 刘宝林109图标和标签l标签JLablel图标Ic

47、on及其实现类ImageIconImageIcon icon = new ImageIcon(jcase/gui/resources/reloaded.png);/ Create a label JLabel label = new JLabel(Reloaded, icon, JLabel.CENTER);JAVA语言程序设计清华大学 刘宝林110文本组件lJTextComponent JTextField JTextArea JEditorPaneJAVA语言程序设计清华大学 刘宝林111按钮lAbstractButton JButton JCheckBox JRadioButtonJAV

48、A语言程序设计清华大学 刘宝林112组合框lJComboBox 类(组合框combo box, 一个文本域 和下拉列表的组合) JComboBox jc = new JComboBox();jc.addItem(bsd);jc.addItem(linux);jc.addItem(mac);jc.addItem(windows);jc.addItemListener(this);JAVA语言程序设计清华大学 刘宝林113选项窗格l选项窗格(tabbed pane) 组件表现为一组文件 夹。每个文件夹都有标题。当用户使用文件夹时, 显示它的内容。 l选项窗格被封装为JTabbedPane 类 l在

49、应用程序中使用选项窗格的一般过程如下所示: 1. 创建JTabbedPane 对象。2. 调用addTab( ) 方法在窗格中增加一个标签(这个方法的 参数是标签的标题和它包含的组件)。4. 重复步骤2,增加标签。5. 将选项窗格加入应用程序的内容窗格。JAVA语言程序设计清华大学 刘宝林114JTabbedPane panes = new JTabbedPane();BaseSwingDemo demo;demo = new JButtonDemo();panes.addTab(demo.getTitle(),demo);demo = new JCheckBoxDemo();panes.ad

50、dTab(demo.getTitle(),demo);demo = new JComboBoxDemo();panes.addTab(demo.getTitle(),demo);JAVA语言程序设计清华大学 刘宝林115滚动窗格l滚动窗格组件是一个可以容纳其他组件的矩形区 域, 在必要的时候提供水平和/或垂直的滚动条。lSwing 中的滚动窗格由JScrollPane 类实现1. 创建JComponent 对象。2. 创建JScrollPane 对象( 构造函数的参数指定组件和水 平、垂直滚动条的策略)。3. 将滚动窗格加入内容窗格中。 JAVA语言程序设计清华大学 刘宝林116ImageIc

51、on post = new ImageIcon(jcase/gui/resources/revolutions.jpg);JLabel label = new JLabel(post);setLayout(new BorderLayout();/ Add panel to a scroll pane int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;JScrollPane scrollPane = new JScr

52、ollPane(label,v,h);scrollPane.setPreferredSize(this.getPreferredSize();/ Add scroll pane to the content paneadd(scrollPane,BorderLayout.CENTER);JAVA语言程序设计清华大学 刘宝林117树l树对象提供了用树型结构分层显示数据的视图。用户可以扩展或收缩视图中的单个子树。l树由Swing 中的JTree 类实现l使用树组件时应遵循的步骤: 1. 创建一个JTree 对象。2. 创建一个JScrollPane 对象(构造函数的参数指定树和 水平和垂直滚动条的

53、策略) 。3. 将树加入滚动窗口。4. 将滚动窗口加入小应用程序的内容面板。 JAVA语言程序设计清华大学 刘宝林118DefaultMutableTreeNode top = new DefaultMutableTreeNode(音乐);DefaultMutableTreeNode classical = new DefaultMutableTreeNode(古典);DefaultMutableTreeNode pop = new DefaultMutableTreeNode(流行音乐);DefaultMutableTreeNode jazz = new DefaultMutableTree

54、Node(爵士);DefaultMutableTreeNode rock = new DefaultMutableTreeNode(摇滚);top.add(classical);top.add(pop);top.add(jazz);top.add(rock);classical.add(new DefaultMutableTreeNode(Beethoven-Six String Quartets);DefaultMutableTreeNode beetle = new DefaultMutableTreeNode(The Beetles);DefaultMutableTreeNode garv = new DefaultMutableTr

温馨提示

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

评论

0/150

提交评论