GUI
组件
- 组件(Component)是图形用户界面的基本组成元素,凡是能够以图形化方式显示在屏幕上并且能够与用户进行交互的对象均为组件,如菜单、按钮、标签、文本框、滚动条等。
- 组件分类
- java.awt.Component
- Java.awt.MenuComponent
- 说明:抽象类java.awt.Component是除菜单相关组件之外所有JavaAWT组件类的根父类,该类规定了GUI组件的基本特性,如尺寸、位置和颜色效果等,并实现了作为一个GUI部件所应具备的基本功能
容器
- 组件通常不能独立地显示出来,必须将组建放在一定的容器中才可以显示出来。
- 有一类特殊的组件是专门用来包含其他组件的,这类组件叫做容器,***java.awt.Container***是所有容器的父类,**java.awt.Container继承自java.awt.Component
- 容器类对象本事也是一个组件,具有组件的所有性质,但反过来组件却不一定是容器
Frame常用的方法
-
public void setBounds(int x, int y, int width, int height)
- 设置窗体的位置和大小,x和y表示窗体左上角距离屏幕的水平和垂直距离,with和height是窗体本身的宽度和高度
-
public void setSize(int width, int height) { super.setSize(width, height); }
- 设置窗体的大小,with和height是窗体本身的宽度和高度
-
public void setVisible(boolean b) { super.setVisible(b); }
- 设置窗体是否可见,true表示可见,false表示不可见
-
public void setBackground(Color bgColor) { synchronized (getTreeLock()) { if ((bgColor != null) && (bgColor.getAlpha() < 255) && !isUndecorated()) { throw new IllegalComponentStateException("The frame is decorated"); } super.setBackground(bgColor); } }
- 设置窗体的背景色
Panel
- Panel是容纳其他组件的组件
- Panel是容器
- Panel不能单独存在,必须得添加到其他容器中
- Panel类拥有从其父类继承来的
- setBounds(int x, int y, int width, int height);
- setSize(int width, int height);
- setLocation(int x, int y);
- setBackground(Color c);
- setLayout(LayoutManager mgr);等构造方法
- Panel的构造方法:
- Panel()使用默认的FlowLayout类布局管理器初始化
- Panel(LayoutManager layout)使用指定的布局管理器初始化
布局管理器
- 容器对其中所包含组件的排列方式,包括组件的位置和大小设定,被称为容器的布局(Layout)
- 为了使图像用户界面具有良好的平台无关性,Java语言提供了布局管理器来管理容器的布局,而==不建议直接设置组件在容器中的尺寸和位置。==
- 每个容器都有一个默认的布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会自动调用其对应的布局管理器。在AWT中,常见的布局管理器:
- BorderLayout (Frame—>BorderLayout)
- BorderLayout布局管理器
- BorderLayout是Frame类的默认布局管理器
- BorderLayout将整个容器的布局规划分成
- 东(EAST)
- 西(WEST)
- 南(SOUTH)
- 北(NORTH)
- 中(CENTER)五个区域,组件只能被添加到指定的区域。
- 如果不指定组件的加入部位,则默认加入到CENETR。
- 每个区域只能加入一个组件,如果加入多个,则先前加入的会被覆盖。
- BorderLayout布局管理器
- FlowLayout (Panel—>FlowLayout)
- FlowLayout是Panel类的默认布局管理器
- FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。
- 不改变组件的大小,按组件原有尺寸显示组件,可设置不同的组件间距,行距以及对其方式。
- FlowLayout布局管理器默认对其方式是***居中***
- FlowLayout是Panel类的默认布局管理器
- GridLayout
- GridLayout布局管理器
- GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。组件被添加到每个单元格中,先从左到右添满一行后换行,从上到下换行。
- 在GridLayout构造方法中指定分割的行数和列数:
- 如GridLayout(3,4);
- GridLayout是以行数为准的
- GridLayout布局管理器
- BorderLayout (Frame—>BorderLayout)
布局管理器总结
-
Frame是一个顶级窗口,Frame的缺省布局管理器为BorderLayout
-
Panel无法单独显示,必须添加到某个容器中。
- Panel的缺省布局管理器为FlowLayout
-
当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器
-
使用布局管理器时,布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的大小和位置属性,如果试图使用Java语言提供的setLocation,setSize(),setBounds()方法,则***都会被布局管理器覆盖。***
-
如果用户确实需要亲自设置组件大小或者位置,则应该取消容器的布局管理器,方法
-
setLayout(null);
-