Java GUI 图形界面

图形界面元素结构

图形界面
    Component            组件,一个能以图形化方式显示出来,并可以与用户交互的对象
        Container        容器,一种特殊的Component,可以盛装普通的Component
        LayoutManager    布局,容器管理其他组件布局的方式
    MenuComponent        菜单,图形界面的菜单组件

容器

Container
    Window       可以独立存在的顶级窗口
        Frame    常见窗口
        Dialog
    Panel        不能独立存在的容器
    ScrollPane

Frame 对象

  • 有标题
  • 允许通过拖拉来改变窗口的位置、大小
  • 初始化时不可见,可用 setVisible(true) 使其显示出来
  • 默认使用 BorderLayout 作为其布局管理器

Panel 对象

  • 不能独立存在、必须放在其他容器中的容器。
  • 外在表现为一个矩形区域。
  • 该区域可以盛装其他组件,为放置其他组件提供空间。
  • 默认使用 FlowLayout 作为其布局管理器。

ScrollPane 对象

  • 当组件占用空间过大时,自动产生滚动条。也可以设置参数默认具有滚动条。
  • 不能独立存在、必须放在其他容器中的容器。
  • 默认使用 BorderLayout 作为其布局管理器。通常不允许改变其布局管理器。

布局管理器

LayerManager 可以根据运行平台来调整组件的大小。

所有 AWT 容器都有默认的布局管理器,为容器指定布局管理器通过调用容器对象的 setLayout() 方法来完成。

AWT 提供了 FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout 5个常用的布局管理器。

FlowLayout

放置规律:从左到右、从上到下进行放置。

public FlowLayout() {
    this(CENTER, 5, 5);
}

public FlowLayout(int align) {
    this(align, 5, 5);
}

public FlowLayout(int align, int hgap, int vgap) {
    this.hgap = hgap;
    this.vgap = vgap;
    setAlignment(align);
}

BorderLayout

BorderLayout 把界面分成 5 个区域:North、South、East、West 和 Center,每个区域只能放置一个组件。

public BorderLayout() {
    this(0, 0);
}

public BorderLayout(int hgap, int vgap) {
    this.hgap = hgap;
    this.vgap = vgap;
}

常用方法

Component 类常用方法

// 设置组件的位置
public void setLocation(int x, int y) {
    move(x, y);
}

public void setLocation(Point p) {
    setLocation(p.x, p.y);
}
// 设置组件的大小
public void setSize(int width, int height) {
    resize(width, height);
}

public void setSize(Dimension d) {
    resize(d);
}

// 设置组件的位置、大小
public void setBounds(int x, int y, int width, int height) {
    reshape(x, y, width, height);
}

public void setBounds(Rectangle r) {
    setBounds(r.x, r.y, r.width, r.height);
}
// 设置组件的可见性
public void setVisible(boolean b)

Container 容器类常用方法

// 向容器中添加其他组件,并返回被添加的组件
// 该组件既可以是普通组件,也可以是容器
public Component add(Component comp){
    addImpl(comp, null, -1);
    return comp;
}

public void add(Component comp, Object constraints) {
    addImpl(comp, constraints, -1);
}

// 设置此容器的布局管理器
public void setLayout(LayoutManager mgr) {
    layoutMgr = mgr;
    invalidateIfValid();
}

Window 容器的方法

// Window 容器提供的方法
// 将窗口调整到最佳大小
public void pack() {}

// 设置窗口相对于指定组件的位置,如果组件未显示或者为 null,则此窗口将置于屏幕的中央
public void setLocationRelativeTo(Component c) {}

Frame 窗口的方法

// 禁用或启用此 Frame 的装饰
public void setUndecorated(boolean undecorated) {}

AWTUtilities

// 创建自定义窗口形状
public static void setWindowShape(Window var0, Shape var1) {}

 

你可能感兴趣的:(Java GUI 图形界面)