当前课程知识点:Java程序设计 >  第七章 图形用户界面 >  7.9-中间层容器(一) >  7.9-中间层容器(一)

返回《Java程序设计》慕课在线视频课程列表

7.9-中间层容器(一)在线视频

7.9-中间层容器(一)

下一节:7.10-中间层容器(二)

返回《Java程序设计》慕课在线视频列表

7.9-中间层容器(一)课程教案、知识点、字幕

大家好

欢迎回来继续学习Java语言程序设计

这一节我们开始学习Swing的中间容器

中间容器的存在

是为了容纳别的组件的

也就是说我们可以用中间容器

对组件进行不同的分组

和不同的布局

中间容器包括一般用途的JPanle

这个我们在例子中已经见过了

还有带滚动条的JScrollPane

还有可以把窗口一分为二的

这个JSplitPane

还有这种像一套卡片一样的JTabbedPane

还有JToolBar是工具栏

这是大家通常都见到一般用途的

还有就是具有特殊用途的

像JInternalFrame

是在一个主窗口中

可以打开多个子窗口用的

还有JRootPane

这个是比较特殊

它可以直接从顶层容器中获得

现在我们来看一下

JRootPane的层次结构

从图上我们可以看到

JRootPane上面包括了有

glassPane LayeredPane

那么LayeredPane它是分层的

它里面又可以有contentPane和JMenuBar

那么JMenuBar是可选的

如果没有这个菜单条没有这个MenuBar

这个contentPane

就会充满整个顶层容器

那么glassPane默认状态下

它是隐藏的

也就是它在所有的

其他的Panel之上

用来截获所有的

要给到底层Panel的这些事件

是与用户的操作进行交互的

LayeredPane分很多层

每层都有一个深度值

深度值高的组件会覆盖在

深度值较低的组件之上

contentPane我们在前面例题中

应该已经见到过了

一般我们会将所有的组件

都添加到contentPane上面

JMenuBar它不会

在这个contentPane上面

它会在这个主窗口上面

如果说没有MenuBar的话

这个contentPane

就会充满整个顶层容器

我们在例子中见到过JPanel了

JPanel是一个中间容器

是最常用的一种中间容器

通常我们用它来组织其他的组件

在默认状态下即JPanel

除了背景颜色以外上面是空的

不绘制任何的东西

我们还可以很容易的

为它设置边框

和其他的绘制特性

这样我们可以有效的利用

JPanel来管理整个内容面板

也就是说我们

可以将一些其他的组件

比如说原子组件

放在不同的JPanel上面

那么它们就自然的

分了不同的组

我们可以使用布局管理器

来规划它所容纳的

组件的位置和大小

怎么用布局管理器

我们用Layout方法来改变布局

也可以在创建一个

JPanel对象的时候

就为它确定某种布局方式

而在默认情况下

是用FlowLayout布局的

这个表中给出了JPanel类的

常用的API供大家参考

我们经常会遇到在一个面板上

放的东西比较多

这样会放不下的情况

那么大家遇到

这样情况会发现什么

你用的这个图形界面的软件

它会给你加上滚动条

如果在某一个区域这个内容

它的范围大于你提供的这个窗口

或者窗口里面

某一个局部区域的范围

那么在这个区域上

一般来说都会加上滚动条

我们自己写Java程序的时候

也可以做到这一点

那么这就要用到JscrollPane

JscrollPane容器

它就是可以带有滚动条的

我们可以通过拖动滚动条的滑块

去看到更多的内容

一个JscrollPane它包含九个部分

一个是中心显示地带

还有四个角和四个边

这个表中给出了

JscrollPane的常用API

一个简单的说明供大家参考

大家看到这里面会

有一些预定义好的常量

还有像构造方法

还有其他的一些有用的方法

这个大家可以做一个简单的参考

接下来我们

通过一个例题来了解一下

JscrollPane的使用方法

这个例题很有意思也很简单

在一个窗口中

我们鼠标点击到什么地方

它就画一个圆

会随机的出不同颜色的圆

那你画的圆多了

或者你画的圆

它的圆心就靠近

这个区域的边边了

那显然这个窗口就不够大了

这个时候滚动条就自动的出现了

这个就是JscrollPane的功效

现在我们就来看一下

这个例题的源代码

这里我只解释一下主要部分

时间关系不会每一行

都仔细去解释

首先在这里面我们要准备好什么

刚才看到那个界面

它有这个指示的用语

告诉你点鼠标左键就是画图

点右键就是擦图

还有一个绘图区域

在绘图区域点击就能画图

那么为此肯定

要把一些东西要准备好

比如说像Size

像一组你绘制的图形的

它们的位置还有这些颜色

各种随机出现的颜色

这是要准备好的

那接下来其实主要的我们来看

要构造两个Label

上面放着提示信息

然后我们要将提示信息添加到

一个叫InstrutionPanel

它实际上是一个JPanel

把这两个提示信息

放到一个Panel上面去

一个中间容器面板上去

接下来要设置这个绘图区域

把绘图区域设置好

设置好绘图区域以后

要将绘图区域

放到一个ScrollPane里面去

让它在图形多的时候能够滚动

然后还要为此设置它的布局

接下来就是我们自己

写的事件响应代码

我们来看MyMouseListener这个类

它扩展了MouseInputAdapter

这里面我们需要响应的

就是一个事件

就是释放鼠标键的事件

mouseRelease的释放鼠标左键

释放鼠标键

如果说进到这个事件里面了

那么肯定是我们

点了鼠标右键或者是左键

如果是点的是鼠标右键的话

那么接下来

就从这个objects这个vector里面

删除所有你已经画过的这些圆

然后如果点的是鼠标左键的话

那就说明你现在要画一个圆

那么在这儿就是

在相应的位置画一个圆

那么画了圆以后

或者说你删除了圆以后

那么你的图形占的这个区域大小

肯定就会发生变化了

那么这个时候我们就需要

去让这个绘图的区域revalidated

那么这个时候就会使得

如果你的地方不够大了

那么滚动条就会出来

这个要调用repaint重画这个窗口

如果你删除了所有的内容

那么你的窗口够大

滚动条就会消失

那在主方法中我们来看

构造这么一个JFrame对象

设置好它的关闭

然后将这个ScrollPane对象

设置为contentPane

所以这个内容面板

顶级容器上内容面板

不仅你可以用get去取得

你也可以去构造一个面板对象

把它设置为contentPane

然后它就充满整个JFrame了

那么这个就是这个代码的

程序代码的一些主要的步骤

详细的代码大家可以边运行的话

边仔细再去阅读

在这一节我们简单了解了

JscrollPane的层次结构

还有JPanel和JscrollPane

这一节内容就是这些

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

7.9-中间层容器(一)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。