Java GUI程序设计入门

    |     2015年6月4日   |   图形界面(GUI)   |     0 条评论   |    1781

实际应用里许多界面都属于 GUI。比如点击 QQ 图标会弹出登录对话框,这个图标所代表的交互方式就是图形化用户界面。转至:Java GUI程序设计的初步上。

一、命令行与图形界面

用户界面分两类。命令行用户接口(Command Line User Interface)就是常见的 DOS 操作:需要记忆命令,操作不直观,例如创建或删除文件夹。图形用户界面(GUI)以图形化方式与用户交互,例如 Microsoft Windows、Word,更友好、更丰富,是当前应用程序设计的主流。

GUI 中,组件(Component)是基本组成元素:凡能以图形化方式显示在屏幕上并能与用户交互的对象都是组件。JDK 的 java.awt 包定义了 Window、Menu、Button、Label、TextField、Scrollbar 等组件类。

类型 说明
Container 继承 Component,本身也是组件;控制组件必须放进容器才能显示
Window 无边框菜单栏的顶层容器,一般用子类 Frame
Panel 最简单常用的容器,不能独立存在,必须加入其他容器

二、第一个 Frame 与 Panel

示例 1:第一个 GUI 应用程序。Frame 默认几乎只容纳标题栏和按钮,要用 setSize;默认不可见,要用 setVisible(true);组件位置由布局管理器决定。

import java.awt.*;
class TestFirstFrame {
    public static void main(String args[]) {
        Frame frame = new Frame("第一个图形用户界面应用程序");
        Label lbl = new Label("这是我的第一个图形用户界面!");
        lbl.setBackground(Color.pink);
        frame.setLayout(new FlowLayout());
        frame.add(lbl);
        frame.setSize(200, 100);
        frame.setVisible(true);
    }
}

示例 2:容器 Panel。取消 Frame 默认布局后,可人工设置 panel 的尺寸和位置。setSize 设宽高,setLocation 设左上角坐标,单位都是像素。每个 GUI 容器都有自己的坐标系。

Frame frame = new Frame("容器Panel的使用");
Panel panel = new Panel();
Button btn = new Button("确定");
panel.setBackground(Color.cyan);
panel.setSize(100, 50);
panel.setLocation(40, 40);
frame.setLayout(null);
frame.add(panel);
panel.add(btn);
frame.setLocation(80, 100);
frame.setSize(200, 100);
frame.setVisible(true);

三、布局管理器

容器对其中组件的排列方式(位置和大小)称为布局(Layout)。每个容器创建时都会带一个默认布局管理器,也可以随时换成新的:

容器对象.setLayout(布局管理器对象);
布局管理器 容器对象.getLayout();

FlowLayout

流式布局,是 Panel 及其子类的默认布局。组件按加入次序逐行定位,行内从左到右,一行排满后换行,按原始大小显示。对齐可用 LEFT、RIGHT、CENTER。

f.setLayout(new FlowLayout());
f.add(button1);
f.add(button2);
f.add(button3);

容器尺寸被重置时,组件位置会跟着调整,但尺寸维持不变:

BorderLayout

边界布局,是 Window 及其子类的默认布局。把容器分成 East、West、South、North、Center 五个区域,每个区域只能加一个组件,后加的会替换先前的。组件尺寸被强制成所在区域大小。

f.setLayout(new BorderLayout());
f.add(btnNorth, "North");
f.add(btnSouth, "South");
f.add(btnWest, "West");
f.add(btnEast, "East");
f.add(btnCenter, "Center"); // 不指名则默认 Center

容器尺寸变化时,相对位置不变:北、南只能水平缩放,东、西只能垂直缩放,中部两个方向都可缩放。

一句话总结:组件必须放进容器;Frame 用 BorderLayout,Panel 用 FlowLayout;setVisible(true) 之后窗口才出现。

转载请注明来源:Java GUI程序设计入门
本文链接地址:https://ai.zhousir.top/?p=768
回复 取消