窗口是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{
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 不可见

系列文章:

Java知多少(81)框架窗口基础的更多相关文章

  1. Java知多少(74)基础类库

    Java 的类库是 Java 语言提供的已经实现的标准类的集合,是 Java 编程的 API(Application Program Interface),它可以帮助开发者方便.快捷地开发 Java ...

  2. Java学习关于集合框架的基础接口--Collection接口

     集合框架(Collection  Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准 ...

  3. Java知多少(83)面板基础:JPanel和JScrollPane

    面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane). JPanel 面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘 ...

  4. Java知多少(95)绘图基础

    要在平面上显示文字和绘图,首先要确定一个平面坐标系.Java语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角.一个坐标点(x,y)对应屏幕窗口中的一个像素,是整数 ...

  5. Java知多少(100)图像处理基础

    图像是由一组像素构成,用二进制形式保存的图片.java语言支持GIF.JPEG和BMP这3种主要图像文件格式.java语言的图像处理功能被封装在Image类中. 图像载入和输出 在java程序中,图像 ...

  6. Java知多少(102)多媒体基础

    本节介绍 Java程序播放幻灯片和动画,播放声音和视频的方法. 播放幻灯片和动画 用实例说明播放幻灯片和动画的方法. [例 12-7]小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示. ...

  7. Java知多少(完结篇)

    Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java ...

  8. Java知多少(下)

    Java知多少(78)Java向量(Vector)及其应用 Java知多少(79)哈希表及其应用 Java知多少(80)图形界面设计基础 Java知多少(81)框架窗口基础 Java知多少(82)标签 ...

  9. Java知多少(112)数据库之删除记录

    删除数据表也有3种方案 一.使用Statement对象 删除数据表记录的SQL语句的语法是: delete from 表名 where 特定条件 例如 : delete from ksInfo whe ...

随机推荐

  1. gbdt xgboost 贼难理解!

    https://www.zybuluo.com/yxd/note/611571 https://zhuanlan.zhihu.com/p/29765582 gbdt 在看统计学习方法的时候 理解很吃力 ...

  2. windows7命令行终端获取管理员模式随笔

    非常感谢http://wenku.baidu.com/view/d0e8d2d2240c844769eaee8a.html 背景: 安装了windows7系统后发现有很多命令在命令行模式下运行不了说没 ...

  3. 洛谷.2754.星际转移问题(最大流Dinic 分层)

    题目链接 枚举时间 每一个时间点 对于每个之前的位置像当前位置连边,表示这一时刻可待在原地 每艘船 之前时刻位置向当前时刻连边 注意别漏了0时刻src连向earth的边 #include<cst ...

  4. Python3字符串-最容易理解的方式

    字符串的创建 字符串创建符号 ' ' " " ''' ''' """ """ 转义符\ >>> str ...

  5. [POJ2420]A Star not a Tree?

    来源: Waterloo Local 2002.01.26 题目大意: 找出$n$个点的费马点. 思路: 模拟退火. 首先任取其中一个点(或随机一个坐标)作为基准点,每次向四周找距离为$t$的点,如果 ...

  6. 早期(编译器)优化--Java语法糖的味道

    1.泛型与类型擦除 泛型的本质是参数化类型的应用,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口和泛型方法.在泛型没有出现之前,只能通过 ...

  7. AngularJS中有关Directive的汇总

    本篇通过几个例子对AngularJS中的Directive进行汇总. 例子1,单向绑定和双向绑定 <html ng-app="myApp"> <head> ...

  8. java判断传进来的是否是图片

    public static void main(String[] args) throws IOException { String filePath = "C:\\Users\\80975 ...

  9. hive 字段名称显示

    首先查看一个sql 1.首先存在一个数据表tmp CREATE TABLE tmp( platform string, channel string, chan_value string, uid s ...

  10. What's the difference between ConcurrentHashMap and Collections.synchronizedMap(Map)?

    来自:http://stackoverflow.com/questions/510632/whats-the-difference-between-concurrenthashmap-and-coll ...