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

  1. Applet窗口:Applet类管理这个窗口,当应用程序程序启动时,由系统创建和处理;
  2. 框架窗口(JFrame):这是通常意义上的窗口,它支持窗口周边的框架、标题栏,以及最小化、最大化和关闭按钮;
  3. 一种无边框窗口(JWindow):没有标题栏,没有框架,只是一个空的矩形。

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

JFrame类的主要构造方法:

  1. JFrame():创建无标题的窗口对象;
  2. JFrame(String s):创建一个标题名是字符串s的窗口对象。

JFrame类的其他常用方法:

  1. setBounds(int x,int y,int width,int height):参数x,y指定窗口出现在屏幕的位置;参数width,height指定窗口的宽度和高度。单位是像素。
  2. setSize(int width,int height):设置窗口的大小,参数width和height指定窗口的宽度和高度,单位是像素。
  3. setBackground(Color c):以参数 c设置窗口的背景颜色。
  4. setVisible(boolean b):参数b设置窗口是可见或不可见。JFrame默认是不可见的。
  5. pack():用紧凑方式显示窗口。如果不使用该方法,窗口初始出现时可能看不到窗口中的组件,当用户调整窗口的大小时,可能才能看到这些组件。
  6. setTitle(String name):以参数name设置窗口的名字。
  7. getTitle():获取窗口的名字。
  8. setResiable(boolean m):设置当前窗口是否可调整大小(默认可调整大小)。

Swing里的容器都可以添加组件,除了JPanel及其子类(JApplet)之外,其他的Swing容器不允许把组件直接加入。其他容器添加组件有两种方法:

  • 一种是用getContentPane()方法获得内容面板,再将组件加入。例如,例5.1程序中的代码:
        mw.getContentPane().add(button);
    该代码的意义是获得容器的内容面板,并将按钮button添加到这个内容面板中。
  • 另一种是建立一个JPanel对象的中间容器,把组件添加到这个容器中,再用setContentPane()把这个容器置为内容面板。例如,代码:
        JPanel contentPane = new JPanel();
        …
        mw.setContentPane(contentPane);
    以上代码把contentPane置成内容面板。

【例 11-1】一个用JFrame类创建窗口的Java应用程序。窗口只有一个按钮。
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程序时,通常不直接用JFrame创建窗口对象,而用JFrame派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容等。

【例 11-2】定义JFrame派生的子类MyWindowDemo创建JFrame窗口。类MyWindowDemo的构造方法有五个参数:窗口的标题名,加放窗口的组件,窗口的背景颜色以及窗口的高度和宽度。在主方法中,利用类MyWindowDemo创建两个类似的窗口。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Example5_2{
    public static MyWindowDemo mw1;
    public static MyWindowDemo mw2;
    public static void main(String args[]){
        JButton static 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 www.wujiyule88.cn {
    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类管理,在Color类中预定了一些常用的颜色,参见表11-3。JFrame类的部分常用方法参见表11-4。

表11-3 Color 类中定义的常用颜色
字段摘要 颜色
static Color black/BLACK 黑色
static Color blue/BLUE 蓝色
static Color cyan/CYAN 青色
static Color darkGray/DARK_GRAY 深灰色
static Color gray/GRAY 灰色
static Color green/GREEN 绿色
static Color lightGray/LIGHTGRAY 浅灰色
static Color magenta/MAGENTA 洋红色
static Color orange/ORANGE 桔黄色
static Color pink/PINK 粉红色
static Color red/RED 红色
static Color white/WHITE 白色
static Color yellow/YELLOW 黄色
表 11-4 JFrame 类的部分常用方法
方法 意义
JFrame() 构造方法,创建一个 JFrame 对象
JFrame(String title) 创建一个以 title 为标题的 JFrame 对象
add() 从父类继承的方法,向窗口添加窗口元素
void addWindowListener(WindowListener ear) 注册监视器,监听由 JFrame 对象击发的事件
Container getContentPane() 返回 JFrame 对象的内容面板
void setBackground(Color c) 设置背景色为 c
void setForeground(Color c) 设置前景色为 c
void setSize(int w,int h) 设置窗口的宽为 w,高为 h
vid setTitle(String title) 设置窗口中的标题
void setVisible(boolean b) 设置窗口的可见性,true 可见,false 不可见

十. 图形界面(GUI)设计2.框架窗口的更多相关文章

  1. 十. 图形界面(GUI)设计1.图形界面设计基础

    早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...

  2. 十. 图形界面(GUI)设计3.标签、按钮和按钮事件

    标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色 ...

  3. 十. 图形界面(GUI)设计6.文本框和文本区

    在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是Action ...

  4. 十. 图形界面(GUI)设计7.文本框和文本区的输入输出

    在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...

  5. 十. 图形界面(GUI)设计5.布局设计

    在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout, ...

  6. 十. 图形界面(GUI)设计11.对话框

    对话框是为了人机对话过程提供交互模式的工具.应用程序通过对话框,或给用户提供信息,或从用户获得信息.对话框是一个临时窗口,可以在其中放置用于得到用户输入的控件.在Swing中,有两个对话框类,它们是J ...

  7. 十. 图形界面(GUI)设计10.菜单

    有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个 ...

  8. 十. 图形界面(GUI)设计9.列表和组合框

    列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择. 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象.程序可以在列表框中加入多个文 ...

  9. 十. 图形界面(GUI)设计13.鼠标事件

    鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionL ...

随机推荐

  1. 抽象类和虚方法、base关键字

    微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract ...

  2. neutron floating ip 限速

    查看浮动ip的id [root@10e131e69e14 oz]# openstack floating ip show 36.111.0.197 +---------------------+--- ...

  3. pytorch:EDSR 生成训练数据的方法

    Pytorch:EDSR 生成训练数据的方法 引言 Winter is coming 正文 pytorch提供的DataLoader 是用来包装你的数据的工具. 所以你要将自己的 (numpy arr ...

  4. jQuery选择器之id选择器

    页面的任何操作都需要节点的支撑,开发者如果快速高效的找到指定的节点也是前端开发中的一个重点.jQuery提供了一系列的选择器帮助开发者达到这一目的,让开发者可以更少的处理复杂选择过程与性能优化,更多专 ...

  5. 使用Bootstrap框架的HTML5页面模板

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. BZOJ 2243 染色(树链剖分好题)

    2243: [SDOI2011]染色 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 7971  Solved: 2990 [Submit][Stat ...

  7. [NC2018-9-9T1]中位数

    题目大意:给你一个长度为$n$的序列,要求出长度大于等于$len$的字段的中位数中最大的一个中位数 题解:可以二分答案,对于比它小的数赋成$-1$,大的赋成$1$.求前缀和,若有一段区间的和大于$0$ ...

  8. POJ 3243 Clever Y | BSGS算法完全版

    题目: 给你A,B,K 求最小的x满足Ax=B (mod K) 题解: 如果A,C互质请参考上一篇博客 将 Ax≡B(mod C) 看作是Ax+Cy=B方便叙述与处理. 我们将方程一直除去A,C的最大 ...

  9. 命令__shell数字-字符串比较

    shell常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若 ...

  10. TCP面试题之HTTP和HTTPS的请求过程

    HTTP的请求过程: 1.TCP建立连接后,客户端会发送报文给服务端: 2.服务端接收报文并作出响应: 3.客户端收到响应后解析给用户: HTTPS的请求过程: 1.客户端发送请求到服务端: 2.服务 ...