窗口是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. day06_05 字典

    1.0 字典 1.1 补充知识:用id可以查找出变量的内存地址 a = 10 print(id(a)) #找出内存地址 #>>>506528496 b = 15 print(id(b ...

  2. Windows批处理中获取日期和时间

    编写Windows bat 批处理时经常会需要使用到日期和时间作为文件名,所以是非常重要的. 如何获取日期呢? 格式: %date% 结果: -- 如何获取时间呢? 格式: %time% 结果: :: ...

  3. 容器基础(一): Docker介绍

    IaaS IaaS阶段, 用户租借基础设施,但是还是需要像以前管理服务器那样,用脚本或者手工方式在这些机器上部署应用.这个过程中当然难免会碰到云端机器和本地机器环境不一致的问题.想想每一次同步不同机器 ...

  4. Android 图片文字单位 px、dp、sp区别

    文章来源:http://www.cnblogs.com/bjzhanghao/archive/2012/11/06/2757300.html px:像素,一个像素点,1px代表屏幕上一个物理的像素点: ...

  5. hadoop2.6.4【windows7】构建maven项目 系列2

    准备windows版本的hadoop2.6.4 下载windows版本的hadoop2.6.4解压在本地 新建maven项目构建hadoop依赖 <?xml version="1.0& ...

  6. Java分布式数据导出实践

    伴随业务发展日益剧增,对数据的要求越来越多也越来越高. 用户在浏览器发起导出请求--web服务器接收请求--请求后台获取数据--数据统计后生成excel或其他图标--响应给客户端 整个过程至少5步,才 ...

  7. Scala 基础(2)—— 基本数据结构

    1. Scala 的面向对象 在学习 Java 的时候,我们说 Java 是一门面向对象的语言,然而 Java 其实并没有完全遵守“一切皆对象”这一准则. 例如:Java 的8种基本数据类型 & ...

  8. js 清除文本中的html标签

    text.replace(/<[^>]+>/g,"");

  9. Statement [倍增+线段树]

    题面 思路 首先,可以确定的是,本题因为每个点只有一条入边,所以整个图肯定是一个基环外向树森林 那么我们首先考虑树上的情况: 我们考虑一个真点,它会对它的子树里面的所有假点产生贡献 一个真点对一个假点 ...

  10. Ubuntu扩展系统盘容量,虚拟机下

    安装gparted软件 sudo apt-get install gparted 接下来, 我们开始用Gparted软件扩展Ubuntu目录的容量: 先看操作步骤: 1. 先从windows的 ntf ...