窗口是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置成内容面板。
 1 【例 11-1】一个用JFrame类创建窗口的Java应用程序。窗口只有一个按钮。
 2 import javax.swing.*;
 3 public class Example5_1{
 4     public static void main(String args[]){
 5         JFrame mw = new JFrame(“我的第一个窗口”);
 6         mw.setSize(250,200);
 7         JButton button = new JButton(“我是一个按钮”);
 8         mw.getContentPane().add(button);
 9         mw.setVisible(true);
10     }
11 }

用Swing 编写GUI程序时,通常不直接用JFrame创建窗口对象,而用JFrame派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容等。

 1 【例 11-2】定义JFrame派生的子类MyWindowDemo创建JFrame窗口。类MyWindowDemo的构造方法有五个参数:窗口的标题名,加放窗口的组件,窗口的背景颜色以及窗口的高度和宽度。在主方法中,利用类MyWindowDemo创建两个类似的窗口。
 2 import javax.swing.*;
 3 import java.awt.*;
 4 import java.awt.event.*;
 5 public class Example5_2{
 6     public static MyWindowDemo mw1;
 7     public static MyWindowDemo mw2;
 8     public static void main(String args[]){
 9         JButton static butt1 = new JButton(“我是一个按钮”);
10         String name1 = “我的第一个窗口”;
11         String name2 = “我的第二个窗口”;
12         mw1 = new MyWindowDemo(name1,butt1,Color.blue,350,450);
13         mw1.setVisible(true);
14         JButton butt2 = new JButton(“我是另一个按钮”);
15         mw2 = new MyWindowDemo(name2,butt2,Color.magenta,300,400);
16         mw2.setVisible(true);
17     }
18 }
19 class MyWindowDemo extends JFrame{
20     public MyWindowDemo(String name,JButton button,Color c,int w,int h){
21         super();
22         setTitle(name);
23         setSize(w,h);
24         Container con = getContentPane();
25         con.add(button);
26         con.setBackground(c);
27     }
28 }

显示颜色由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知多少(上)
Java知多少(中)
Java知多少(78)Java向量(Vector)及其应用
Java知多少(79)哈希表及其应用
Java知多少(80)图形界面设计基础

Java知多少(81)框架窗口基础相关推荐

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

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

  2. Java知多少(96)绘图之设置字型和颜色

    Java绘图中,显示文字的方法主要有三种: (1)drawString(String str,int x,int y):在指定的位置显示字符串. (2)drawChars(char data[],in ...

  3. Java知多少(105)套接字(Socket)

    网络应用模式主要有: 主机/终端模式:集中计算,集中管理: 客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理: 浏览器/服务器模式:利用Internet跨平台. www ...

  4. Java知多少(84)图形界面之布局设计

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

  5. Java知多少(中)

    Java知多少(上) Java知多少(39)interface接口 Java知多少(40)接口和抽象类的区别 Java知多少(41)泛型详解 Java知多少(42)泛型通配符和类型参数的范围 Java ...

  6. 零基础写Java知乎爬虫之进阶篇

    转载自 零基础写Java知乎爬虫之进阶篇 前面几篇文章,我们都是简单的实现了java爬虫抓取内容的问题,那么如果遇到复杂情况,我们还能继续那么做吗?答案当然是否定的,之前的仅仅是入门篇,都是些基础知识 ...

  7. Java数据库持久层框架基础:jdbc原理和使用综述

    Java数据库持久层框架基础:jdbc原理和使用综述 前言 jdbc基础架构 jbdc的使用 jdbc的主要接口 驱动 连接 连接池 会话Statement 结果集ResultSet 前言 目前jav ...

  8. Java知多少(43)异常处理基础

    Java异常是一个描述在代码段中发生的异常(也就是出错)情况的对象.当异常情况发生,一个代表该异常的对象被创建并且在导致该错误的方法中被抛出(throw).该方法可以选择自己处理异常或传递该异常.两种 ...

  9. Dubbo框架-概念-基础案例

    文章目录 Dubbo 一. 分布式RPC框架 Apache Dubbo 1. 软件架构的演进过程 1.1 集群和分布式 1.2 单体架构 1.2.1 架构说明 1.2.2 优点 1.2.3 缺点 1. ...

最新文章

  1. Ubuntu环境搭建系列—JavaEE篇
  2. Python中的strip()函数的用法
  3. Kotlin协程简介(一)
  4. linux 机器格式化_为什么机器人应该为我们格式化代码
  5. 文档服务器设置密码,文档服务器设置密码
  6. 论文浅尝 | 弱监督关系抽取的深度残差学习方法
  7. 作者:冷芳玲(1978-),女,博士,东北大学计算机科学系讲师
  8. 软考信息系统项目管理师_项目风险管理---软考高级之信息系统项目管理师019
  9. XP远程桌面连接强制登录
  10. ORA-22859 无效的列修改
  11. mysql导入报错 [Err] 1273 – Unknown collation: ‘utf8mb4_0900_ai_ci’
  12. word中html在哪,Win10 word模板路径在哪?Win10如何修改word模板路径?
  13. 高盛发布区块链报告:从理论到实践(中文版)二
  14. 这个社会在极严厉地惩罚不好好读书的人
  15. python打开网页并实现点击
  16. CabloyJS微信模块、企业微信模块已出齐
  17. 虹膜识别1.opencv3同心圆的提取
  18. Linux非交互式修改用户密码
  19. python笔记之1-简单读入+循环、判断+数组+函数调用+题目Resistors in Parallel(18焦作)
  20. 个人博客选什么域名?

热门文章

  1. 3-JAVA中的JSON操作
  2. ASP.NET中对STA COM组件的不正确调用产生的w3wp远程DoS
  3. java Runtime类
  4. android 自定义 打包文件类型,Android Studio配置打包生成自定义文件名
  5. Redis的安装配置与介绍(Windows版)
  6. AOP Error creating bean with name ‘myCaculator‘ defined in file [XXX]
  7. task.run 强制结束线程_图文介绍进程和线程的区别
  8. linux中tomcat安装
  9. yum 安装nginx
  10. select count(*)和select count(1)