框架窗口基础

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

窗口是 GUI 编程的基础。小应用程序或图形界面应用程序的可视组件都放在窗口中。在 GUI 里,窗口是用户屏幕的一部分,起着「屏幕中的小屏幕」的作用。常见有三种窗口。

  • Applet 窗口:由 Applet 类管理,程序启动时由系统创建和处理。
  • 框架窗口(JFrame):通常意义上的窗口,有边框、标题栏,以及最小化、最大化、关闭按钮。
  • 无边框窗口(JWindow):没有标题栏和框架,只是一个空矩形。

用 Swing 的 JFrame 类或其子类创建的对象就是 JFrame 窗口。

一、JFrame 常用方法

主要构造方法:JFrame() 创建无标题窗口;JFrame(String s) 创建标题为 s 的窗口。

方法 作用
setBounds(x, y, width, height) 位置与宽高,单位像素
setSize(width, height) 设置窗口大小
setBackground(Color c) 背景颜色
setVisible(boolean b) 可见性;JFrame 默认不可见
pack() 紧凑显示;否则初始可能看不到组件
setTitle / getTitle 设置 / 获取窗口标题
setResizable(boolean m) 是否可调整大小(原文 setResiable 为笔误)

二、怎样往窗口加组件

Swing 里除 JPanel 及其子类之外,其他容器不允许把组件直接加入。常用两种做法:一是 getContentPane() 拿到内容面板再 add;二是建一个 JPanel 中间容器,用 setContentPane() 把它设成内容面板。

mw.getContentPane().add(button);

JPanel contentPane = new JPanel();
mw.setContentPane(contentPane);

三、两个窗口示例

【例 11-1】用 JFrame 创建一个只有一个按钮的窗口。

import javax.swing.*;
public class Example5_1 {
    public static void main(String args[]) {
        JFrame mw = new JFrame("我的第一个窗口");
        mw.setSize(250, 200);
        JButton button = new JButton("我是一个按钮");
        mw.getContentPane().add(button);
        mw.setVisible(true);
    }
}

用 Swing 写 GUI 时,通常不直接 new JFrame,而用派生子类,方便加入特定要求和内容。【例 11-2】用子类 MyWindowDemo 创建两个类似窗口。原文 JButton static butt1 无法编译,已改为普通局部变量。

import javax.swing.*;
import java.awt.*;
public class Example5_2 {
    public static MyWindowDemo mw1;
    public static MyWindowDemo mw2;
    public static void main(String args[]) {
        JButton butt1 = new JButton("我是一个按钮");
        String name1 = "我的第一个窗口";
        String name2 = "我的第二个窗口";
        mw1 = new MyWindowDemo(name1, butt1, Color.blue, 350, 450);
        mw1.setVisible(true);
        JButton butt2 = new JButton("我是另一个按钮");
        mw2 = new MyWindowDemo(name2, butt2, Color.magenta, 300, 400);
        mw2.setVisible(true);
    }
}
class MyWindowDemo extends JFrame {
    public MyWindowDemo(String name, JButton button, Color c, int w, int h) {
        super();
        setTitle(name);
        setSize(w, h);
        Container con = getContentPane();
        con.add(button);
        con.setBackground(c);
    }
}

显示颜色由 java.awt 包的 Color 类管理,预定了一些常用颜色,见表 11-3。JFrame 部分常用方法见表 11-4。

113

114

一句话总结:JFrame 默认看不见,要 setVisible(true);组件加到内容面板上,日常用子类封装标题、尺寸和背景。

转载请注明来源:框架窗口基础
本文链接地址:https://ai.zhousir.top/?p=756
回复 取消