设计图形界面SwingJFrame课件_第1页
设计图形界面SwingJFrame课件_第2页
设计图形界面SwingJFrame课件_第3页
设计图形界面SwingJFrame课件_第4页
设计图形界面SwingJFrame课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、设计图形界面SwingJFrame设计图形界面SwingJFrame目标和要求目标了解Swing容器(窗体)组件会使用常用几种容器JFrame,JPanel掌握布局管理器的使用掌握事件的响应与处理了解AWT组件图形设计要求会设计简单的图形界面完成并上交计算器、记事本等简单图形界面2目标和要求目标4要求3要求5本单元内容图形用户界面(GUI)简介Java图形用户界面-AWTJava图形用户界面-SwingJAVA的GUI类的层次结构框架JFrame在框架中添加组件4本单元内容图形用户界面(GUI)简介6主要内容图形用户界面概述AWT和Swing介绍Swing常用窗体和组件事件处理完成简单图形界面

2、,递交作品5主要内容图形用户界面概述7图形用户界面概述图形界面概念图形界面简介图形界面构成6图形用户界面概述图形界面概念8图形用户界面概念(GUI)字符界面用字符串、命令行的方式与用户交互图形用户界面:Graphics User Interface用直观的图形来表示数据用直观、方便的GUI标准组件来接收、发送命令GUI组成成分的标准化使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,实现人机交互。7图形用户界面概念(GUI)字符界面9图形用户界面简介图形用户界面的构成容器:布局、安排标准组件用户自定义成分8容器容器是用来组织其他界面成分和元素的单元。一般一个图形用户界面对应一个复杂容

3、器。如一窗口标准组件是图形用户界面的最小单位,它里面不再包含其他的成分。如单选按钮,文本框用户自定义成分是根据用户需要设计自定义的图形界面成分。如绘制几何图形标准组件用户自定义成分图形用户界面简介图形用户界面的构成10容器容器是用来组织其他用户界面设计原则控制权在用户界面与操作的风格一致性宽容(容错)性简洁与美观并重9用户界面设计原则控制权在用户11AWT和Swing介绍Java图形用户界面的组件和事件由java.awt和java.swing包共同提供。AWT(抽象窗口工具集Abstract Window Tookit,AWT),称为重型组件主要包括组件、事件处理模型、图形和图像工具、布局管理

4、等。Swing是AWT的一个扩展,称为轻型组件。10AWT和Swing介绍Java图形用户界面的组件和事件由jaAWT与SwingSwing轻量,AWT重量Swing组件完全用Java语言实现,没有本地代码,不依赖平台。功能强大。AWT组件依赖本地,由本地平台负责,不同操作系统显示外观可能不同,缺乏平台独立性。Swing美观、易用、组件量大,缺点:运行慢。JTable。JTree显示图像(image)和图标(icon) AWT提供了一个丰富的图形环境,例如画图和制表包Swing 是在 AWT 组件基础上构建的,但是不能完全替代AWT,Swing 使用了 AWT 的事件模型和支持类 11AWT与

5、SwingSwing轻量,AWT重量13AWT组件介绍12TextField文本行类TextArea文本区类AWT组件介绍14TextFieldTextArea13javax.swing15javax.swingSwing组件介绍14Swing组件介绍16AWT介绍容器有三种类型的容器:Window、Panel、ScrollPane,常用的有Panel, Frame, Applet。 组件文本框和文本区域单行文本框TextField多行文本区域TextArea标签Label按钮(Button)选择型组件选择框Checkbox (单选/复选)下拉列表 Choice列表框 List菜单菜单条(Me

6、nuBar)菜单(Menu)菜单项(MenuItem)对话框-Dialog15AWT介绍容器17AWT介绍布局管理器负责处理将容器内的所有组件的大小、位置、顺序、间隔等FlowLayout(流布局 )BorderLayoutGridLayoutCardLayoutGridBagLayoutnull16AWT介绍布局管理器负责处理将容器内的所有组件的大小、位置、AWT介绍事件让图形界面接收用户的操作,就必须给各个组件加上事件处理机制主要有WindowEvent( 窗口事件:关闭窗口,窗口闭合,图标化) FocusEvent( 焦点事件:焦点的获得和丢失)KeyEvent( 键盘事件:键按下、释放

7、)MouseEvent( 鼠标事件:鼠标单击,移动)ActionEvent(动作事件:按钮按下,TextField中按Enter键)17AWT介绍事件19AWT介绍绘制图形Graphics类绘制图片18AWT介绍绘制图形Graphics类201921Swing介绍Swing是AWT的扩展,组件比AWT丰富,美观,对操作系统依赖少。Swing成为Java图形界面程序设计的主要工具。AWT组件和Swing组件混和使用会产生错误,建议不要混用。主要学习Swing。20Swing介绍Swing是AWT的扩展,组件比AWT丰富,美Swing主要学习内容容器框架窗体JFrame面板JPanelJDialo

8、gJScrollPane组件按钮组件标签组件文本组件菜单组件21布局管理流布局边界布局网格布局事件监听鼠标事件键盘事件窗体事件动作事件Swing主要学习内容容器23布局管理1.JAVA的GUI类的层次结构Java支持GUI的类分为组件类、容器类和辅助类Component所有图形界面组件类的超类,JComponent是所有Swing组件类的超类,它的常用子类有JButton、JTextField、JTextArea、JRadioButton、JMenu等。容器类一个容器可以容纳多个组件,并使它们成为一个整体。Frame、Panel等是AWT的容器类,类名前加J一般是Swing的容器类。辅助类用来

9、描述GUI组件的属性,如图形环境、颜色、字体、大小。常用辅助类有Color、Graphics、Font、LayoutManager等。 221.JAVA的GUI类的层次结构Java支持GUI的类分为组2.JComponent组件的分类 JComponent是一个抽象类,用于定义所有子类组件的一般方法,其类层次结构如下所示: java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-javax.swing.JComponent并不是所有的Swing组件都继承于JComponent类,如JFrame、JDialog、JApplet。J

10、Component类继承于Container类,所以凡是此类的组件都可作为容器使用。 232.JComponent组件的分类 JComponent是一2.JComponent组件的分类组件从功能上分可分为: 顶层容器JFrame,JApplet,JDialog,JWindow共4个 中间容器JPanel,JScrollPane,JSplitPane,JToolBar特殊容器:在GUI上起特殊作用的中间层JInternalFrame,JLayeredPane,JRootPane.基本控件:实现人际交互的组件JButton, JComboBox, JList, JMenu, JSlider, Jt

11、extField等不可编辑信息的显示:向用户显示不可编辑信息的组件JLabel, JProgressBar, ToolTip。可编辑信息的显示:向用户显示能被编辑的格式化信息的组件JColorChooser, JFileChooser, JTable, JTextArea。242.JComponent组件的分类组件从功能上分可分为:263.使用Swing的基本规则 Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(content pane)上。内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件。基本规则如下:(1)把Swing组件放入一个顶层S

12、wing容器的内容面板上(2)避免使用非Swing的重量级组件。 253.使用Swing的基本规则 Swing组件不能直接添加到顶4.Swing窗口层次Swing窗口包含5个层次顶层容器(Top level Container):窗口容器对象,可以再加入其他的窗口对象根面板:是顶层容器中包含的最内层,一般无法在这一层进行操作层次面板:加上此层上的对象可以设定其层次,不会被内容面板中的对象屏蔽内容面板(Content Pane):大部分的可视对象都放在这一层上,一般程序中必须用getContentPane()方法来获取内容面板玻璃面板:主要用于产生绘图效果以及触发窗口程序的各种事件264.Swi

13、ng窗口层次Swing窗口包含5个层次2827窗口Content PaneGlass PaneRoot PaneLayered Pane 4.Swing窗口层次29窗口Content PaneGlass PaneRoot5.Swing程序结构简介 Swing的程序设计一般可按照下列流程进行:1 导入Swing包2 设置顶层容器3 设置组件4 增加组件到容器5 进行事件处理 285.Swing程序结构简介 Swing的程序设计一般可按照下Swing编程步骤1、导入Swing包首先必须导入Swing包:import javax.swing.*;在大多数Swing程序中,可能还需要导入两个主要的AW

14、T包:import java.awt.*;import java.awt.event.*;29Swing编程步骤1、导入Swing包31Swing编程步骤2、设置顶层容器在Swing GUI程序中,至少应包含有一个顶层Swing容器。对于大多数程序而言,顶层的Swing容器是JFrame,JDialog或JApplet。每一个JFrame对象实现一个主窗口,每一个JDialog对象实现一个二级窗口,每一个JApplet对象在浏览器窗口中实现一个Applet的显示域顶层Swing容器向其上的Swing组件提供了绘画和事件处理的支持。30Swing编程步骤2、设置顶层容器32Swing编程步骤2、

15、设置顶层容器即使是最简单的Swing程序,也会包含多个层次,其根总是顶层容器,其他所有容器或组件都被放置在根容器中。每一个顶层容器间接第含有一个中间容器,称为内容窗格(contentpane)。对于大多数程序,我们无需知道在顶层容器和内容窗格之间有些什么。内容窗格直接或间接的含有所有可见的组件,但是,如果顶层容器有一个菜单条,那么菜单条通常被放置在内容窗格之外的某个位置。增加一个组件到一个容器,可以使用add方法。add方法至少应有一个参数,即需增加的组件,而且,有时可能还需要另外一个参数来提供布局信息。31Swing编程步骤2、设置顶层容器33Swing编程步骤3、设置组件这一步中,主要是实

16、例化相关Swing组件,并进行相关设置。32JButton bt=new JButton(Im a Swing button!);bt.setMnemonic(keyEvent.VK-I);bt.addActionListener(.create an action listener.);Swing编程步骤3、设置组件34JButton bt=neSwing编程步骤4、增加组件到容器JPanel pane=new JPanel();pane.setBorder(BorderFactory.createEmptyBorder(30,30,10,30);pane.setLayout(new Gri

17、dLayout(0,1);pane.add(button);pane.add(label);代码段的第一行是创建一个JPanel对象pane;第二行为JPanel对象增加一个边界;第三行是设置一个布局管理器,最后两行是将button和label添加进pane中。33Swing编程步骤4、增加组件到容器35Swing编程步骤5、进行事件处理Swing组件的事务处理模式与AWT一样,后面会有详细介绍。34jbtn.addActionListener(this);public void actionPerformed(ActionEvent e)numClicks+;jlbl.setText(lbl

18、Prefix+numClicks);WindowListener wl=new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0); Swing编程步骤5、进行事件处理36jbtn.addAct 6.框架JFrame(顶层容器)JFrame类是java.awt包中的Frame类的子类,JFrame类创建的对象是窗体。在Java中,框架是一种容器,它能够包含按钮、文本框、菜单等组件。JFrame类是重量组件JFrame的使用:不把组件直接添加到Swing窗体中Swing窗体上有一个称为内容面板的容器,应把组

19、件添加到内容面板中不要为窗体设置布局,而应为内容面板设置布局,默认为BordeLayout内容面板可以能过窗体的getContentPane()方法获得35 6.框架JFrame(顶层容器)JFrame类是java.框架JFrameJFrame的常用构造方法有:JFrame( )JFrame(String title ) /创建一个标题为title的框架36框架JFrameJFrame的常用构造方法有:38框架JFrameJFrame的常用成员方法:void setTitle(String title) /设置框架的标题String getTitle( ) /返回框架的标题void setVi

20、sible(boolean b) /参数为true时设置框架可见,该方法调用前框架不可见void setSize(double w, double h) /设置框架的宽和高 void setLocation(int x, int y) /设置窗口左上角的坐标,(0,0)为屏幕左上角Container getContentPane( ) /返回框架的内容面板void pack( ) /根据框架中放置的组件和布局调整窗口大小void setJMenuBar(JMenuBar menubar) /为框架设置菜单条void setDefaultCloseOperation(int operation)

21、 /设置关闭窗口后的默认操作37框架JFrameJFrame的常用成员方法:39关闭窗口操作的响应调用JFrame中的方法 setDefaultCloseOperation(int operation)其中参数的取值:DO_NOTHING_ON_CLOSE /什么也不做就关闭DISPOSE_ON_CLOSE /隐藏窗口并释放窗体HIDE_ON_CLOSE /隐藏窗口EXIT_ON_CLOSE /退出窗口38关闭窗口操作的响应调用JFrame中的方法40Example1:显示一个空的框架public class Example1 public static void main(String ar

22、gs) JFrame f = new JFrame(空的框架);f.setSize(200,150);f.setLocation(100, 100);f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 39Example1:显示一个空的框架public class 4042Example1的另一种写法class EmptyFrame extends JFrame public EmptyFrame(String title) super(title); /直接调用超类的构造方法setSize(200, 15

23、0); /直接调用从超类继承的方法public class Example9_1 public static void main(String args) EmptyFrame f1 = new EmptyFrame(空的框架);f.setLocation(100,100);f.setVisible(true); /通过对象调用继承的方法f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 41Example1的另一种写法class EmptyFrameExample1的另一种写法说明编写GUI程序,经常通过继承JFrame定义新的框架类,在新的框

24、架类中定义GUI界面及其组件。 比直接使用JFrame对象的好处:新框架类一经定义(设置),可多次使用(创建该类对象)。而直接使用JFrame对象需用一次,设置一次。42Example1的另一种写法说明编写GUI程序,经常通过继承在框架中添加组件 JFrame的结构很复杂,它的内部包含一个叫内容面板(content pane)的容器。向JFrame添加组件不是直接将组件添加到JFrame,而是添加到它的内容面板中。因此,向JFrame添加组件首先必须调用getContentPane( ) 方法获得JFrame的内容面板。内容面板是Container类的对象,调用Container的add( )

25、方法可以把组件加入内容面板。43在框架中添加组件 JFrame的结构很复杂,它的内部包含一个Example2:在框架窗口中添加组件问题:在框架窗口中添加按钮组件,并在屏幕的中央显示框架。分析:默认情况下,框架显示在屏幕的左上角,左上角的坐标是(0,0),JFrame的setLocation(int x, int y)方法可以设置框架在屏幕上的位置。Swing组件中的按钮用JButton表示,下列语句创建一个JButton对象:JButton jb = new JButton(OK); / OK是按钮上显示的文本 44Example2:在框架窗口中添加组件问题:在框架窗口中添加Example2:

26、在框架窗口中添加组件程序源代码:import java.awt.Container;import javax.swing.JButton;import javax.swing.JFrame;class ButtonFrame extends JFrame ButtonFrame() super(按钮和框架);JButton jb = new JButton(OK); / 创建按钮对象jbContainer con = getContentPane(); / 获取框架的内容面板con.add(jb); / 把按钮对象jb加入内容面板45Example2:在框架窗口中添加组件程序源代码:47Exa

27、mple2:在框架窗口中添加组件public class Example2 public static void main(String args) JFrame bf = new ButtonFrame(); /超类变量引用子类对象bf.setSize(200, 150);bf.setLocation(400, 300);bf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);bf.setVisible(true); 46Example2:在框架窗口中添加组件public clasExample2:在框架窗口中添加组件47程序运行结果: Examp

28、le2:在框架窗口中添加组件49程序运行结果: 补充说明通过获取内容面板添加组件的方式形式上很复杂。从Java SE5.0开始JFrame可以直接调用add( )方法向内容面板添加组件。因此,上述ButtonFrame也可以写成:class ButtonFrame extends JFrame ButtonFrame() super(按钮和框架);JButton jb = new JButton(OK);add(jb); / 将按钮对象jb加入内容面板48补充说明通过获取内容面板添加组件的方式形式上很复杂。从Jav4951框架窗体JFrameSwing图形界面设计第一步生成一个顶层容器对象。S

29、wing包含多层次的嵌套空间,最高层为顶层容器,下一层为中间容器,称为内容窗格(ContentPane),所有组件(除菜单栏)都必须放在内容窗格。Swing中顶层容器有JFrame、JDialog。50框架窗体JFrameSwing图形界面设计第一步生成一个顶层JFrame向JFrame中添加组件必须先取得ContentPane对象,再用add()方法把组件加入到该对象中。两种方法将组件加到JFrame的内容窗格对象中:使用JFrame的getContentPane()方法获得当前JFrame窗体的ContentPane对象,然后调用ContentPane对象的add()方法添加组件首先生成一个容器对象作为JFrame窗体的内容面板,通常选用JPanel,然后设置它的布局,再用add()方法添加组件。51JFrame向JFrame中添加组件必须先取得Content方法一 代码结构JFrame jf=new JFrame();/创建窗口 . /设置窗口的各类属性Container cp=jf.getContentPan

温馨提示

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

评论

0/150

提交评论