优质ppt课件——第9章-GUI图形用户界面.pptx
《优质ppt课件——第9章-GUI图形用户界面.pptx》由会员分享,可在线阅读,更多相关《优质ppt课件——第9章-GUI图形用户界面.pptx(106页珍藏版)》请在三一办公上搜索。
1、第9章 GUI图形用户界面,李慧芬B1-308,教学目标,了解Swing的体系结构及相关概念掌握Swing组件的特性和分类,了解使用Swing开发GUI程序的步骤掌握常用容器的分类,掌握JFrame、Jpanel的构造方法和常用方法掌握常用Swing组件的构造方法和常用方法了解GUI布局管理器的分类及特点了解事件处理模型的基本概念,掌握事件处理的基本步骤。,本章目录,9.1 Swing概述9.2 Swing容器 9.3 常用Swing组件 9.4 GUI布局管理器9.5 事件处理模型,9.1 Swing概述,GUI(Graphic User Interface):用户与计算机之间交互的图形化操
2、作界面,又称为图形用户接口Java语言提供两个处理图形用户界面的类库:java.awt包:Abstract Window ToolKit 抽象窗口工具包java.swing包:在AWT基础上构建的一套新的图形界面系统Awt与Swing的区别:Awt:Java处理图形用户界面的初始途径。重量级组件,把图形元素的创建和行为交给目标平台上的本地GUI工具箱进行处理。理论上“一次编写,随处运行”,实际上“一次编写,随处调试”Swing:是JFC(Foundation Classes)的一部分,轻量级组件,显示界面与本机OS无关,100%的纯Java实现。,1、Swing体系结构,Swing是在AWT的
3、基础上构建的图形界面系统。以AWT为基础,提供了AWT中的所有功能进行了扩充,提供了许多新的图形界面组件。,9.1 Swing概述,GUI设计三个概念:组件(Component):Java的图形用户界面的最基本组成部分。可以以图形化的方式显示在屏幕上并能与用户进行交互的对象。例如一个按钮,一个标签等。必须将组件放在一定的容器中才可以显示出来。容器(Container):本身也是一个组件。主要功能是容纳其他组件和容器。布局管理器(Layout Manager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。,7,注意:Component类
4、是一个抽象类,不能直接使用。,类结构,Swing的组件,Swing与AWT相似的组件,Swing比AWT增加的组件,2、Swing组件的特性,Swing组件的特性MVC体系结构:每个组件有对应的model类管理数据每个组件有相关的分离模型和界面可存取性支持:实现 了Accessible接口支持键盘操作设置边框使用图标,9.1 Swing概述,Swing组件的分类(1)顶层容器:JFrame,JApplet,JDialog,JWindow共4个。(2)中间容器:JPanel,JScrollPane,JSplitPane,JToolBar等。(3)特殊容器:在GUI上起特殊作用的中间层,如JInt
5、ernalJFrame,JLayeredPane,JRootPane等。(4)基本控件:实现人机交互的组件,如Jbutton,JComboBox,JList,JMenu,JSlider,JTextField等。(5)不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel,JProgressBar,ToolTip等。(6)可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser,JFileChoose,JFileChooser,JTable,JTextArea等。,9.1 Swing概述,使用Swing的基本规则 Swing组件不能直接添加到顶层容器中,必
6、须添加到一个与Swing顶层容器相关联的内容面板上。(1)把Swing组件放入一个顶层Swing容器的内容面板上(2)避免使用非Swing的重量级组件。,9.1 Swing概述,对JFrame添加组件有两种方式:(1)用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent)(2)建立一个JPanel或 JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:JPanel contentPane=new JPa
7、nel();/把其它组件添加到Jpanel中;frame.setContentPane(contentPane);/把contentPane对象设置成为frame的内容面板,9.1 Swing概述,Swing程序设计流程(1)引入swing包(2)选择外观和感觉(3)设置顶层容器(4)设置按钮和标签(5)向容器中添加组件(6)在组件周围添加边界(7)进行事件处理,9.2 Swing容器,容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。Java程序界面的构成:一个顶层容器(即主窗口)顶层容器包含若干个中间容器 每个中间容器包含若
8、干个基本组件 按照合理的布局方式将它们组织在一起 基本组件可响应发生在其上的事件,9.2 Swing容器,Swing常用的顶层容器有JFrame:用来创建application,最常用的JApplet:用来创建appletJDialog:用来创建对话框,常用JWindow:不常用,9.2 Swing容器,中间容器JPanel,JScrollPane,JSplitPane,JTabbedPane、JInternalFrame:这些容器提供将有关组件按照某种布局组合在一起,然后放入中间容器或顶层容器的功能JPanel:提供一个面板JScrollPane:是具有滚动条的窗格JSplitPane:是具
9、有拆分功能的窗格JTabbedPane:是带有若干标签的分类窗格JInternalFrame:用于创建内嵌于JFrame中的内部框架Box:提供创建横向/纵向盒子容器的功能,9.2.1 JFrame框架,类 JFrame 是java.awt.Frame的子类JFrame上只能有一个唯一的组件JRootPane调用JFrame.getContentPane()方法可获得JFrame中内置的JRootPane对象。程序不能直接在JFrame实例对象上增加组件和设置布局管理器,应在JRootPane对象上增加组件和设置布局。Jframe的setDefaultCloseOperation方法可以设置单
10、击关闭按钮时的事件处理方式。,9.2.1 JFrame框架,19,9.2.1 JFrame框架,常用构造方法:JFrame():创建无标题窗口。JFrame(String s):创建标题名字是字符串s的窗口例如:JFrame f=new JFrame(“Hello”);setDefaultCloseOperation方法:设置单击窗口上的关闭按钮时的事件处理方式。JFrame.DO_NOTHING_ON_CLOSEJFrame.HIDE_ON_CLOSEJFrame.DISPOSE_ON_CLOSEJFrame.EXIT_ON_CLOSE,JFrame类的常用方法:,容器类Container的
11、常用方法,组件类Component的常用方法,例子-创建框架窗口,import java.awt.*;import javax.swing.*;public class JFrame_Exam extends JFrame public static void main(String args)JFrame_Exam mainJFrame=new JFrame_Exam();mainJFrame.setTitle(JFrame 框架示例!“);mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mainJFrame.setSize
12、(300,300);mainJFrame.setLocationRelativeTo(null);mainJFrame.getContentPane().setLayout(new FlowLayout();mainJFrame.getContentPane().setBackground(Color.green);JLabel lbl=new JLabel(大家好,我是一个标签);JButton btn=new JButton(按钮);mainJFrame.getContentPane().add(lbl);mainJFrame.getContentPane().add(btn);mainJ
13、Frame.setVisible(true);,9.2.2 JPanel面板,面板(JPanel)轻量级容器组件没有标题的中间容器,实现容器的嵌套。默认布局管理器是FlowLayout这类容器不能独立存在,必须通过add()方法添加到一个顶层容器或存在于顶层容器的一个中间容器。面板(JPanel)的大小由它所包含的组件决定当组件个数增加,面板(JPanel)也会随之而增大,9.2.2 Jpanel面板,JPannel类的构造方法:public JPanel();public JPanel(boolean isDoubleBuffered);public JPanel(LayoutManager
14、 layout);public JPanel(LayoutManager layout,boolean isDoubleBuffered),JComponent类的常用方法,import java.awt.*;import javax.swing.*;public class JPanel_Exampublic static void main(String args)JFrame mainJFrame=new JFrame(框架+面板示例!);mainJFrame.setSize(240,240);mainJFrame.setLocation(200,200);Container conta
15、iner=mainJFrame.getContentPane();container.setBackground(Color.lightGray);container.setLayout(null);JPanel pnl=new JPanel();pnl.setSize(190,180);pnl.setBackground(Color.green);pnl.setLocation(20,20);JButton btn=new JButton(我是一个按钮,点击我);btn.setSize(170,40);btn.setBackground(Color.yellow);btn.setLocati
16、on(10,50);pnl.setLayout(null);/取消pnl的默认布局管理器 pnl.add(btn);/将命令按钮btn加入到面板pnl中 container.add(pnl);/将面板pnl加入到窗口默认面板中 mainJFrame.setVisible(true);,例子:,9.2.3 JDialog对话框,JDialog组件(对话窗口)作用:用来显示提示信息或接收用户输入。特点:没有最小化按钮、状态等控制元素。对话框一般都对应于一个顶层窗口,如JFrame窗口。对话框模式分类:有模式:在运行期间不允许用户同应用程序的其他窗口进行交互。通常情况下,程序要在处理完对话框中的数据
17、后才能进行下一步工作,因此,有模式的对话框应用较多。无模式:允许用户同时在该对话框和程序其他窗口中切换操作。,JDialog类的构造方法,JDialog类的常用方法,import java.awt.*;import javax.swing.*;public class TestJDialog public static void main(String args)JFrame mFrame=new JFrame(这个一个主框架);mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mFrame.setSize(300,300);mFram
18、e.setLocationRelativeTo(null);JDialog jd=new JDialog(mainJFrame);jd.setTitle(这是一个对话框);jd.setSize(200,200);jd.setLocationRelativeTo(null);jd.setVisible(true);jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);mFrame.setVisible(true);,例子:,9.2.4 Swing其他容器,(1)分层面板(JLayeredPane)Swing提供两种分层面板:JLayeredP
19、ane和JDesktopPane。JDesktopPane是JLayeredPane的子类,专门为容纳内部框架(JInternalFrame)而设置。向一个分层面板中添加组件,需要说明将其加入哪一层,指明组件在该层中的位置,语法为:add(Component c,Integer Layer,int position)(2)滚动窗口(JScrollPane)主要通过移动JViewport(视口)来实现。滚动条实际就是沿着组件移动视口,同时描绘出它在下面“看到”的内容,9.2.4 Swing其他容器,(3)分隔板(JSplitPane)JSplitPane提供可拆分窗口。支持水平拆分(JSplit
20、Pane.HORIZONTAL_SPLIT)和垂直(JSplitPane.VERTICAL_SPLIT)拆分并带有滑动条。常用方法有:JSplitPane(intnewOrientation,ComponentnewLeftComponent,ComponentnewRightComponent)/创建一个具有指定方向和指定组件的新 JSplitPane。addImpl(Component comp,Object constraints,int index)/增加指定的组件 setTopComponent(Component comp)/设置顶部的组件 setDividerSize(int n
21、ewSize)/设置拆分的大小 setUI(SplitPaneUI ui)/设置外观和感觉,9.2.4 Swing其他容器,(4)选项板(JTabbedPane)JTabbedPane提供一组可供用户选择的带有标签或图标的开关键。常用的方法如下:add(String title,Component component)/增加一个带特定标签的组件addChangeListener(ChangeListener l)/选项板注册一个变化监听器(5)工具栏(JToolBar)JToolBar是用于显示常用工具控件的容器。用户可以拖拽出一个独立的可显示工具控件的窗口。常用的方法如下:JToolBar(
22、String name)/构造方法getComponentIndex(Component c)/返回一个组件的序号getComponentAtIndex(int i)/得到一个指定序号的组件,9.2.4 Swing其他容器,(6)内部框架(JInternalFrame)JInternalFrame就如同一个窗口在另一个窗口内部。使用实例:JFrame frame=new JFrame(InternalFrameDemo);/实例化窗口JDesktopPane desktop=new JDesktopPane();/实例化容器JDesktopPaneJInternalFrame myframe=
23、new JInternalFrame();/实例化内部窗口desktop.add(myframe);/把内部窗口添加到容器中myframe.setSelected(true);/内部面板是可选择的frame.setContentPane(desktop);/把desktop设为frame的内容面板,9.2.5 案例分析:Swing容器综合实例,1.案例描述建立一个窗口对象,并在其上添加一个标签对象,用来显示对窗口的各种不同操作。在窗口中,单击窗口右上角的关闭窗口按钮时,则弹出对话框,要求用户进一步确认是否要关闭该窗口。,9.2.5 案例分析:Swing容器综合实例,2.案例分析本案例需要创建一
24、个窗口对象,该对象继承自JFrame类,在主窗口中创建一个标签对象。还需创建一个JDialog对象以及两个按钮,JDialog对象的拥有者为已创建的窗口对象。程序运行时将触发两个不同类的事件:一个是当单击窗口右上角的关闭按钮时所触发的WindowEvent事件;另一个是当对话框中的按钮被单击时所触发的ActionEvent事件。故系统需要实现WindowListener接口和ActionListener接口的监听程序。,9.3 常用Swing组件,常用组件:JLabel标签组件JTextField文本框JTextArea文本区 JButton按钮组件 JCheckBox复选框JRadioBut
25、ton单选框 JList列表框组件 JComboBox下拉列表框组件 JMenu菜单组件,9.3.1 JLabel标签组件,JLabel标签为GUI提供文本(主要)或图像(也可以)信息JComponent的子类可以显示以下内容:(1)单行的只读的文本信息(2)图像(3)同时显示文本与图像信息注意:程序一般不修改标签的内容,2.标签的构造方法,JLabel():创建一个没有显示内容的标签对象。JLabel(Icon image):创建一个显示为图标的标签对象,默认为居中排列。JLabel(Icon image,int alignment):创建一个显示为图标的标签对象,并指定其排列方式。排列方式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优质 ppt 课件 GUI 图形 用户界面

链接地址:https://www.31ppt.com/p-3959792.html