1 / 102

Java 软件设计基础

Java 软件设计基础. GUI 设计进阶. 1. 布局设计. 布局概述 Java 的 GUI 组件在容器中放置,它们的位置由容器的布局管理器来安排。后台工作的布局管理器能够将组件放置在正确的位置。 java.awt FlowLayout BorderLayout CardLayout GridLayout GridBagLayout java.swing BoxLayout ScrollPanelLayout ViewportLayout OverLayout. FlowLayout 布局策略

lei
Télécharger la présentation

Java 软件设计基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java软件设计基础 GUI设计进阶

  2. 1.布局设计 布局概述 Java的GUI组件在容器中放置,它们的位置由容器的布局管理器来安排。后台工作的布局管理器能够将组件放置在正确的位置。 java.awt FlowLayout BorderLayout CardLayout GridLayout GridBagLayout java.swing BoxLayout ScrollPanelLayout ViewportLayout OverLayout

  3. FlowLayout 布局策略 将容器的组件按照加入的先后顺序从左至右依次排列,一行排满后就转到下一行继续从左至右顺序排列,每一行中的组件都居中排列,组件间默认的水平和垂直间隙是五个像素。 FlowLayout是JPanel与Applet默认的布局管理策略。 构造方法

  4. 示例

  5. 两种程序格式的比较 创建一个GUI应用程序就是要创建一个框架,用扩展JFrame类来定义一个框架是很自然的;对框架中组件和函数的修改增减可以很方便的在框架的构造函数中完成;这样的方式集成性和封装性更好,也易于重复使用,如为其创建多个实例来获得多个框架。

  6. GridLayout 布局策略 在一个二维网格中布置组件。将容器划分为若干行若干列的网格区域,每个网格的大小相等,组件就位于这些划分出来的小格中,一个网格可以放置一个组件。组件可被依次的放在第一行第一列、第一行第二列……的顺序进行。 通过在一个网格中放置容器,可以实现嵌套。 GridLayout也称为网格布局管理器,该布局比较灵活,划分多少网格由程序自由控制,组件定位也比较精确。 构造方法

  7. 实例

  8. BorderLayout 布局策略 BorderLayout也称为边界布局管理器, 是Window、Frame和Dialog默认的布局管理策略。 将窗口分为North/East/South/West/Center五个区域,中间的区域最大。南北组件可以水平扩展,东西组件可以垂直拉伸;每加入一个组件都应该指明添加到哪个区域,若不指明则默认添加至Center区域。 构造方法 一般方法

  9. 实例

  10. CardLayout 布局策略 CardLayout也称为卡式布局管理器。可实现多个组件在同一容器区域内重叠放置、交替显示。通过用户的操作可将组件一个接一个显示出来,即容纳多个组件的同时只能从这些组件中选出一个来显示,这个被显示的组件将占据所有的容器空间。 构造方法 一般方法

  11. 实例

  12. GridBagLayout 布局策略 采用网格的形式来布置组件,允许指定的组件跨多行或多列,同时允许组件部分重叠。 组件的位置和大小由GridBagConstraints类的对象实例决定。 GridBagConstraints类规范组件使用GridBagLayout布局管理器的限制条件。 GridLayout也称为网格包布局管理器,是Java提供的最灵活、最复杂的布局管理器之一。 构造方法

  13. GridBagLayout的方法 GridBagConstraints的属性

  14. 实例

  15. BoxLayout 布局策略 又称为盒式布局管理器,在java.swing.border包中。 有垂直和水平两种排列方式,组件加入的先后顺序为从左(上)到右(下),容器两端是剩余的空间。在策划程序布局时,也可以通过盒式布局的嵌套达到目的。 java.swing中提供的Box类是Container类的子类,据此创建的容器称为盒式容器,默认布局即为BoxLayout且无法更改。 构造方法

  16. 一般方法

  17. 实例

  18. 2.菜单组件 菜单栏 用来管理菜单,只能被添加到Frame对象中。作为整个菜单的根基不参与交互操作。Java中,应用程序的菜单都包含在菜单栏对象中。在awt中由MenuBar负责创建,在swing中由JMenuBar负责创建。 构造方法与一般方法 菜单 用来存放与整合菜单项的组件。菜单可以是单层的菜单,也可以为多层结构。awt中由Menu负责创建,swing中由JMenu负责创建。

  19. 构造方法与一般方法

  20. 菜单项 是菜单系统的基本组件,是用户最终选择的项目。在awt中由MenuItem负责创建,在swing中由JMenuItem负责创建。菜单项本身也可以是菜单,称为子菜单。 菜单项也可以使用带复选框或单选按钮的菜单项,分别是: awt: CheckBoxMenuItem RadioButtonMenuItem swing:JCheckBoxMenuItem JRadioButtonMenuItem 例:创建单选按钮菜单项和创建复选框菜单项

  21. 构造方法与一般方法:

  22. 弹出式菜单 不固定在菜单栏中,而是可以四处浮动显示,依附于某个容器或组件,平时并不显示,在单击鼠标右键时显示。在awt中由PopupMenu负责创建,在swing中由JPopupMenu负责创建。 菜单创建步骤 创建菜单栏对象,并将其加入到所建的框架中: 创建菜单及其子菜单

  23. 通过Action对象新建菜单项并添加事件监听器 将菜单项加入到子菜单或菜单中,将子菜单加入到菜单中,将菜单加入到菜单栏中 实例

  24. 3.swing组件 概述 swing组件与awt组件的比较 swing组件在awt基础上构建起来的,基于awt的事件处理机制;所以完全舍弃awt包不太可能; swing组件几乎都是轻量级组件。 swing采取了“模型-视图-控制器”(MVC: Model-View-Controller)的设计范式,其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。 新版的swing包可能与旧版不完全兼容; awt包的运行速度比swing快,但swing的功能更趋于完善。 采用swing进行GUI设计的一般流程 引入swing包,基于使用感觉选择合适的外观并设置顶层容器; 向容器内添加并设置组件; 在组件周围添加辅助属性并进行事件处理。

  25. swing中的包

  26. swing包中的类层次结构

  27. swing组件的分类 按照功能划分 基本控件:实现人机交互的基本组件。包括JButton、JcomboBox、JList、JMenu、JSlider、JTextField、JTexAtrea、JPasswordField; 顶层容器:包括JFrame、JApplet、JDialog、JWindow; 中间容器:涵盖JPanel、JScrollPane、JSplitPane、JLayeredPane、JToolBar; 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame(内部窗件)、JRootPane。 按swing组件对信息的可编辑与否划分 不可编辑信息的显示:如JLabel、JProgressBar、ToolTip; 可编辑信息的显示:如JTextField、JTextArea、JPasswordField、JColorChooser、JFileChooser、JTable。

  28. 组件常用方法 组件的颜色 组件背景色的设置方法: 组件前景色的设置方法: 组件背景色的获取方法: 组件前景色的获取方法: 上述方法中都涉及Color类,Color类是java.awt包中的类,该类窗件的对象称为颜色对象,Color类的构造方法如下: 其中red、green、blue的取值在0~255之间。 public void setBackground(Color c) public void setForeground(Color c) public Color getBackground() public Color getForeground() public Color(int red, int green, int blue)

  29. 组件的字体 组件字体的设置方法: 组件字体的获取方法: 上述方法用到了java.awt包中的Font类,该类的构造方法如下: name:字体名字,如果系统不支持字体的名字,将取默认名字创建字体对象; style:字体样式,有效取值为Font.BOLD、Font.PLAIN、Font.ITALIC、Font.ROMAN_BASELINE、Font.CENTER_BASELINE、Font.HANGING_BASELINE、Font.TRUETYPE_FONE; size:字体大小,单位是磅。 获取系统中可以提供的字体名字,可以通过GraphicsEnvironment对象调用getAvailableFoneFamilyNames()方法将可用字体名称存放到字符串数组中。 public void setFont(Font f) public void getFont() public Font(String name, int style, int size)

  30. 组件的边框: 组件边框的设置方法: 组件边框的获取方法: 默认情况下组件的边框是黑边矩形。 组件透明 设置组件的透明性: isOpa取false时组件为透明,取true时被设置为不透明; 获取组件的透明性: 组件透明时返回值为false,否则返回值为true; public void setBorder(Border b) public Border getBorder() public void setOpaque(booleanisOpa) public booleangetOpaque()

  31. 组件的大小与位置 设置组件的大小,width指定组件的宽度,height指定组件的高度。 设置组件在容器中的位置。 返回一个Dimension对象下组件的宽度和高度值。 返回一个含有成员变量x和y的Point对象的引用,x和y就是组件在容器中的坐标。 设置组件在容器中的位置和组件的大小。 返回一个含有成员变量x、y、width和height的Rectangle对象的引用。 public void setSize(int width, int height) public void setLocation(int x, int y) public Dimension getSize() public Point getLocation() public void setBounds(int x, int y, int width, int height) public Rectangle getBounds()

  32. 组件的激活与可见性 设置组件是否可被激活,当b为true时组件可被激活,否则组件不可激活。 设置组件在该容器中的可见性,当b为true时组件可见,否则组件不可见。 实例 public void setEnable(boolean b) public void setVisible(boolean b)

  33. JFrame窗体 JFrame是GUI中的一个框架容器。javax.swing包中的JFrame是java.awt包中Frame类的子类。 构造方法: 一般方法:

  34. 使用JFrame的流程 当应用程序需要一个窗口时,可使用JFrame或其子类创建一个对象,窗口默认的被系统添加到显示器屏幕上。 JFrame窗体通过调用方法getContentPane()得到它的内容面板。 将组件添加到JFrame窗体的内容面板中去。 标签与文本组件 标签组件 JLabel大体与Label一致,但它允许添加图像,而且当鼠标的光标停留在标签位置时会显示一段文字提示。 构造方法:

  35. 一般方法 文本组件 JTextField类:定义一个可以输入单行文字的矩形区域文本框;

  36. JTextArea类:定义一个可以输入单行文字的矩形区域文本框;JTextArea类:定义一个可以输入单行文字的矩形区域文本框; JPasswordField类:定义一个密码框对象。 事件机制 事件源 能够产生时间的对象都可以称为事件源,如文本框、按钮、下拉式列表等等。

  37. 监听器 通过对事件源进行监听,一以便对发生的事件做处理。事件源通过调用相应的方法注册相应的监听器。对于注册了监听器的对象,系统将自动调用相应的事件类创建该类事件的实例,并通知监听器。 处理事件的接口 当事件源发生事件时,接口立刻通知监听器自动调用实现的某个接口方法,接口方法规定了怎样处理事件的操作。 实例:

  38. 按钮组件 AbstractButton类派生出两个组件: JButton组件:swing按钮; JToggleButton组件:单选按钮(JRadioButton)和复选框(JCheckButton)的父类。 JButton类的构造方法: JButton类的一般方法:

  39. 实例

More Related