JAVA知识点梳理第三部分——图形用户界面GUI部分

来源:互联网 发布:扬州 住宿 推荐 知乎 编辑:程序博客网 时间:2024/06/05 08:34

JAVA整理知识点传送门:
JAVA知识点拉理第一部分——常规知识
JAVA知识点梳理第二部分——接口、内部类、异常等等
JAVA知识点梳理第三部分——图形用户界面GUI部分
JAVA知识点梳理第四部分——Swing控件
JAVA知识点梳理第五部分——JAVA数据流(文件)
JAVA知识点梳理第六部分——线程
JAVA知识点梳理第七部分——网络

JAVA的图形用户界面设计

图形用户界面(Graphical User Interface)GUI 是现在大多数程序不可缺少的部分。JAVA中的图形用户界面由各种组件(component)。在java.awt和java.swing包中国定义了许多用于创建图形用户界面的组件类。

多数Swing组件以字母J开头。

Swing和AWT组件最大的不同是Swing组件在实现时不包含任何本地代码。

GUI API包含可以分为三个组件类(component class)、容器类(container class)、辅助类(helper class)

容器

JAVA的GUI界面是由组件构成,例如按钮(Button),文本输入框(TextEdit),标签(label)等都是组件,其中有一类特殊的组件称作为容器(Container),例如框架(Frame)、面板(Panel)等。容器是组件的容器,各种组件(包括容器)都可以通过add()方法添加到容器中。

顶层容器

显示在屏幕上的多有组件都必须包含在某个容器中,而这些容器是可以进行嵌套的。在这个嵌套层次的最外层,
必须是一个顶层容器
Swing中提供了4个顶层容器,分别是JFrame、JApplet、JDialog和JWindow

  • JFrame是一个带有标题行和控制按钮(最大化,最小化,关闭)的独立窗口,创建应用程序的时候需要用到JFrame。
  • 创建小应用程序的时候要使用JApplet,它被包含在浏览器窗口中。
  • 创建对话框的时候要使用JDialog。
  • JWindow是一个不带标题行和控制按钮的窗口,很少被使用。

内容窗格

每一个顶层容器(JFrame、JApplet、JDialog、JWindow)都有一个内容窗格(ContentPane),实际上,顶层容器中除菜单之外的组件都放在这个内容窗格。将组件放入内容窗格,可以通过两种方法:

  • 通过顶层容器的getContentPane()方法获得其默认的内容窗格(getContentPane()返回的方法类型为java.awt.Container,仍然为一容器。然后将组件添加到内容窗格中。)

    container contentPane=frame.getContentPane();

    contentPane.add(button,BorderLayout.CENTER)

上面的语句也可以合并成一句:

frame.getContentPane().add(button,BorderLayout.CENTER);
  • 创建一个新的内容窗格取代顶层容器默认的内容窗格。通常的的做法是创建一个JPanel的实例(它是java,awt,Container的子类),然后将组件添加到JPanel实例中,再通过顶层容器的setContentPane()方法将JPanel实例设置为新的内容窗格。

例如:

JPanel contentPane=new JPanel();contentPane.setLayout(new BorederLayout());contentPane.add(button,BorderLayout.CENTER);frame.setContentPane(contentPane);

组件类Component

component类的实例可以显示在屏幕上。component类是包括容器内的所有用户界面的根类。而JComponent类是所有轻量级SWing组件类的根类,Component和JComponent都是抽象类。

GUI辅助类

辅助类不是Component的子类,例如:Graphics、color、Font、FontMetrics、Dimension和LayoutManager等。他们用来描述GUI组件的属性。例如,图形的内容。颜色,字体,以及大小等等。

布局管理

  • FlowLayout 流布局

FlowLayout是最简单的布局管理器。按照组件添加的顺序,从左到右的将组件排列在容器中。当放满一行的时候,就开始新的一行。可以使用三个常量FlowLayout.RIGHT、FlowLayout.CENTER\FlowLayout.LEFT之一来指定组件的对其方式。

FlowLayout布局管理器的三种构造方法:

FlowLayout();FlowLayout(int align);FlowLayout(int align,int hgap,int vgap);

align选项可以将组件的对齐方式设定为左对齐还是右对齐。
hgap和vgap可以设定组件的水平间距和垂直间距。

改变frame的大小,组件的布局也会随之改变!

  • BorderLayout 边缘布局

BorderLayout是顶层容器中的内容窗格的默认布局管理器,它提供一种较为复杂的组件布局管理方案。

BorderLayout的两种构造方法:

BorderLayout();BorderLayout(int hgap,vgap);各部分具有间距的BorderLayout实例

每一个由BorderLayout管理的容器被划分为了北(North)、南(South)、西(West)、东(East)、中(center)。分别使用常量BorderLayout.NORTH|···设置组件的对齐方式。

改变frame大小时,窗口中的组件的相对位置不会发生改变。但是组件的大小会改变。

  • GridLayout布局管理器 网格管理器

GridLayout是一种网格式的布局管理器,它将空间划分成了若干行乘若干列的网格,组件依次放在其中,每一个组件占一格。

GridLayout布局的三种构造方法;
GridLayout();创建一个只有一行的网格
GridLayout(int rows,int cols);创建一个rows行,cols列的布局管理器
GridLayout(int rows,int cols,int hgap,int vgap);hgap和vgap分别表示各个组件中的距离。

rows和cols中的一个值可以为0,但不能同时为0。如果cols为0,那么网格的列数按照实际情况确定。

  • BoxLayout布局管理器

BoxLayout它将容器中的组件按照水平方向排成一行或者垂直方向排成一列。当组件排成一行时,每个组件可以有不同的宽度,当组件排成一列的时候后,每个组件可以有不同的高度。

BoxLayout的构造方法:

BoxLayout(Container target,int axis);

其中,Container型参数target指明是为哪个容器设置此布局管理器,int型参数axis指明组件的排列方向,通常使用的是BoxLayout.X_AXIS或BoxLayout.Y_AXIS分别表示是水平方向排列或者垂直方向的排列。

原创粉丝点击