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

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

7.10-中间层容器(二)在线视频

7.10-中间层容器(二)

下一节:7.11-原子组件(一)

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

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

大家好

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

这一节我们来

继续学习中间层的容器

现在我们首先来看这么个示意图

这样的结构的窗口

我相信大家在

用一些图形界面的软件中都遇到过

一个窗口被从中间

分成左右两个部分

每个部分是呈现不同的内容

那么但是往往

这左右两个部分中间

它们的操作又是有一定的联系的

比如说我在左边的列表中

选一个图形文件的名字

右边就会展示这个图形

那么这个就要用JSplitPane来实现

使用JSplitPane

我们就可以把两个组件

显示在两个区域内

中间有条分割线

我们可以拖动中间这条分割线

就可以改变左右两边的

这个组件的大小

当然这个分割线不一定

一定是分左右的

也可以是水平的分割线

把区域分成上下

两个部分也是可以的

这个大家在设置SplitPane的时候

可以去设置

由于一个窗口的区域

被分成两个部分以后

那么往往每个部分就更小了

这个时候可能你东西太多

放不下的情况就会更多的发生

怎么办

往往我们是先把组件

放在带滚动条的这个ScrollPane里面

然后再将ScrollPane

放到SplitPane里面

这样在每部分窗口中

都可以拖动滚动条

看到组件里面的全部内容

这个表中给出了

JSplitPane的常用API供大家参考

下面我们就来看一下

像这样一个窗口左边是列表

右边显示图片这是怎么实现的

我们来看看这个例题的代码实现

接下来我们就来看

这个刚才这个示意图里面的

左右分两个区域

左边列出图像的列表

右边显示图像

还都可以滚动是怎么实现的

首先就需要准备

一个properties文件

这个properties文件

实际上就是一个纯文本文件

我们看到里面

有这个images这个内容

images等于号后面

就是列出了这些

我们准备好的图形文件的文件名

如果是在当前工作目录下

你就写文件名就行了

如果是在当前

工作目录的下级子目录下

你就要写相对的目录名

要放在里面

或者你写全路径名

放在里面都可以

所以你就列出所有的

你要展示的这些图形的文件名

列出来

放在这样一个

properties文件里面

纯文本文件这个要准备好

接下来我们在程序中

会看到怎么用它

那我们来看这个

class SplitPaneDemo

它实现了ListSelectionListener

也就是我们选择了

List里边的某个项以后

就会触发当前对象

自己的事件响应代码

我们来看在这个构造方法里面

首先就有这样一个getBundle

ResourceBundle.getBundle

调用这个getBundle方法

大家看这个参数是什么imagenames

那不就是刚才我们准备好的

这个properties文件的文件名吗

就是这个文件名

这样的话这个getBundle方法

就会从这个文件中

取出你写好的这些内容

取出写好的这些内容

然后我们要一项一项

把它那些项分辨出来

怎么办呢

我们就可以用get String images

images是什么

不就是一开始前面

我们这个项的名字吗

images

等于后面这一大串字符串

那么这个get String

就把image后面这一大串内容

当做一个字符串取回了

当做一个字符串取出来了

取出来以后我们还需要

把它分解成

一个一个的图像文件名

那么就用这个parseList

parseList是我们

自己写的一个方法

在这后面这是parseList

它返回的就是一个Vector

实际上就是在这里面分解出

用空格分隔的一个个字符串

我们看这用的

是String Tokenizer方法

用String Tokenizer

那么它的分隔符是空格

就是用空格作为分隔符

分解出一个一个来

你看构造了这个

String Tokenizer以后

用它的hasMoreTokens

就往下一个一个找nextToken

就将一个一个的文件名分解出来了

然后就这些文件名添加到

这个Vector向量里面去

这样的向量就容纳了

所有的这些图像文件的文件名

所以在ParseList这个方法返回

就是一个Vector

那么这些由于有可能发生异常

所以都放在try里面了

如果发生异常就进入catch块

给出各种的错误信息

这个就不仔细去看它了

接下来我们就要

将取到的这些文件名的

这个序列放到一个List里面去

所以在这儿要构造这个List

我们构造一个JList

它的参数就是刚才我们

分解出来的那些文件名的序列

然后呢这个LIST的内容有了

还要设置它的选择模式是单选

因为List是允许

有的它是允许多选的

这个single selection是单选的

然后默认是index里

应默认是最开头的那个是被选中

然后将当前对象

自己作为事件监听器添加上去

然后再将这个List

加到ScrollPane上面去

接下来就是要准备

这是左边那个List准备好了

放到ScrollPane上还可以滚动了

接下来该准备

右边的图形的区域了

那就是右边实际上是一个Label

我们就要设置右边Label了

那么实际上是构造了一个JLabel

那一开始展现给用户的

总要有第一个图吧

那么我们就设置一下

它的第一个图放在那儿去

然后设置一下大小

然后也是要把它

放到ScrollPane上面

所以我们来看你用一个JScrollPane

然后将这个图

放图形的这个Label作为参数

这样右边的这个Label

也放到滚动的ScrollPane上面了

接下来就要构造这个左右

分两个区域的SplitPane

构造SplitPane然后

让它左右分两边

然后但是也要告诉它

左边放什么组件右边放什么组件

左边就是这个ListScrollPane

右边就是pictureScrollPane

都放上去了

放上去再做好相关的设置

那我们来看这个事件响应

这个valueChanged

如果说你选了一个List里面的一项

一个图形文件名

那么就是你选项的状态就改变了

选项的状态就改变了

那么这个时候就进到这里面来

它就有一个ListSelectionEvent

那我们就进到这个响应程序里面来

然后就要去找要显示的对象

要找要显示的对象

找不到的情况不说

我们说如果说能够找到的话

我们就看就是getSelectedIndex

它是第几个

然后用这个Index去找到

你这个Image Icon里面

就是你的图像列表里面

它是第几个就把它找出来

这是找出来的东西实际上

因为它直接就是文件名了

那我们就setIcon

就将这个图形就放到

那个picture Label上面去了

然后再设置一下相关的大小参数

让它可见

那么在主方法中比较简单

构造一个JFrame

有关闭的设置

然后再构造一个SplitPaneDemo

这个SplitPane要加到

当前的contentPane上面去

所以我们要get contentPane

然后把它添加上去

把它大小调合适

变成可见的就行了

所以这个例子我们就看到

整个回顾一下这个步骤

就是要准备好

这个properties文件

列出你在列表中要列的文件名

也就是你要在右边显示的

那些图像的文件名

作为字符串都列出来

每个文件名之间空格分隔

可以包含路径名

然后在这里面我们要构造

这个左边的列表的时候

就要去这个properties文件里面

把这个字符串取出来

然后再给它

分解成一个个的文件名

放在一个Vector里面

用这个Vector就构造一个List

把这个List

放在一个SplitPane上面

那么右边做一个放图形的Label

也把它放在ScrollPane上面

然后左边你选择了

某一个List项以后

就触发了选项状态更改的事件

然后就会去

进到事件响应程序里面

看你选的是哪一个

然后就把相应的文件名取出来

然后把这个文件代表

这个文件名就用setIcon

就把这个图像设置到

这个图形的Label上面了

那么这个就是左右的

我们看看它的联动了

你选一个什么显示一个什么

如果我们在一个窗口中

有几项功能

那么怎么样能够把它放得下呢

地方有限

这时候我们就可以

给每项功能加一个标签

当我们点选不同标签的时候

不同的卡片显示到前面来

这个就是JTappedPane的功能

这个表中给出了

JTappedPane的常用API

供大家参考

我们还可以用JToolBar

将一些常用功能用工具栏来表示

这个表中给出了

JToolBar的常用的API

供大家参考

现在我们来看一下

这个ToolBar的

这个例题的源代码

在这个例题运行的时候

我们会看到它实际上是两个部分

上面是工具条

然后下面是一个文本区

工具条里面会有几个按钮

点不同的按钮文本区

显示不同的文字

所以首先我们来看

在它的构造方法中

要准备好这个JToolBar

构造一个JToolBar

然后要调用另外一个方法

addButtons

将几个按钮

都添加到ToolBar上面去

添加按钮这个事情

一会儿我们再往后看

接下来下一件事情

就是准备好这个文本区

要改造一个JTextArea

就是点不同的按钮

文本区会显示不同的文字

一行一行一行文字往下显示

你点一块按钮显示一行文字

那么文字多了放不下

它会滚动吧

所以需要放在一个

滚动的ScrollPane里面去

所以把这个文本区

添加到ScrollPane里面去

然后进行一下布局

布局的东西就不详细去看了

接下来再看这个addButtons

将这个按钮添加上去

首先看这个第一个按钮添加

构造一个JButton

然后每一个按钮上

它实际上是

要有一个图标放在按钮上面的

那我们就把这个图标的

全路径名文件名写在这儿

你用imageIcon

然后把它放在这个按钮上

那接下来还要

设置这个setToolTip

就是当你鼠标指向这按钮的时候

它要有一个提示信息弹出来

那么用setToolTipText来设置这个

然后接下来就是注册事件监听器

这个事件监听器

是一个匿名内部类的对象

实现了ActionListener的

匿名内部类的对象

那么它就是实现了

其中的ActionPerformer的方法

这个ActionPerformer方法

就是调用这个displayResult去显示

Action for first button这一行文本

等一会儿我们

再看这个displayResult这个方法

然后这第一个按钮构造好了以后

要添加到ToolBar上面去

同样的道理构造第二个按钮

设置它的提示文字

以及当点这个按钮的时候

响应的动作是

要显示Action for second button

这个然后第二个按钮

添加到ToolBar上面去

同样的道理把第三个按钮

构造好设置好

添加到ToolBar上面去

然后再看这个displayResult

是怎么样把文字

显示在文本区域呢

是调用这个textArea

它的append方法

这样就将你指定的这个字符串

参数字符串显示上去了

然后再加一个换行

以便下一次在显示文字的时候

显示在下一行上面

主方法很简单

就构造一个ToolBarDemo对象

就可以了

然后把大小调合适变成可见

有时候呢

我们希望在一个主窗口中呢

打开多个子窗口

比如说打开多个文档

那这个怎么实现呢

这时候就需要用JInteralFrame

使用JInteralFrame就可以实现

在一个主窗口中打开多个文档

每个文档各自占用一个新的窗口

但是它们都在主窗口的内部

这JInteralFrame的使用

跟JFrame几乎一样的

可以最大化

最小化管理窗口加入菜单

那JInteralFrame

它是轻量级的组件

这一点它跟JFrame不一样

它呢只能是中间的容器

必须依附于顶层容器之上

通常我们也会将JInteralFrame

加入JDesktopPane来管理

JDesktopPane类继承自JLayeredPane

是用来建立虚拟桌面的

它可以显示并且管理

众多的InteralFrame之间的层次关系

这个表中就给出了

JInteralFrame的常用API

现在我们就来看一下

这个例题源代码

看一下在一个

应用程序的主窗口中

怎么样通过菜单命令

来打开多个子窗口

首先这个应用程序

还是需要一个JFrame

所以它自己就扩展了JFrame

然后呢这个子窗口

都是放在这个DesktopPane上面的

这样的话便于管理和拖拽的速度

这些都比较快

所以都放在DesktopPane上面

一些其他的准备

我们就不仔细看了

现在我们来看

来首先看要构造一个DesktopPane

用了一个JDesktopPane对象

这是一个有层级的这样一个Panel

然后调用了一个

我们自己写的方法

createFrame这就是

用来首先创建第一个子窗口

也就是说这个程序运行开始

马上你就看见有第一个子窗口

在主窗口里面呆着了

那我们来看一下createFrame

都做了一些什么事情

好 在这里

这里设备是构造了

一个MyInternalFrame

构造了一个内部的窗口

然后把它设置成可见的

接下来要把它

放到这个Desktop上面去

DesktopPane

把它放到这上面添加到上面去

然后这个窗口

让它默认是被选中的

也就是默认是焦点状态

所以要设置一下Selected是true

实际上就是构造一个

Internal内部的Frame

Internal Frame

然后把它添加到DesktopPane上面

这是createFrame干的事情

接下来我们就将这个桌面Panel

DesktopPane

把它设置为这个顶层容器

JFrame的内容面板

所以这是setContentPane

把它设置为内容面板

然后要往上面去添加这个菜单条

所以呢要创建一个MenuBar

把它添加上去

createMenuBar添加上去

接下来我们再来看

这个创建这个菜单条

createMenuBar

是构造一个JMenuBar

名字这个菜单叫Document

然后底下设置了不同的菜单项

菜单项还设置了这个热键

那么我们将这个菜单项添加进去

添加上去

如果说我们将来选择的是new

那就会打开一个新的窗口

这样我们将这个menuItem

添加到menu上面

再将menu添加到MenuBar上面

这是我们就创建好了一个MenuBar

所以这个就将添加了菜单

和菜单项的这个菜单条MenuBar作为返回值返回

返回了以后我们看在这儿

就要将MenuBar

将这个MenuBar设置

到当前的窗口里面来

那接下来我们还要

看它的事件响应程序

如果是选择的new

那我们就要看开一个新窗口

新的内部子窗口

那看这个事件监听器里面

它覆盖了ActionPerformed的

这又是一个用匿名

内部类对象做的事件监听器

它的ActionPerformed方法

就是调用creatFrame

就是刚才我们看到的

去开一个新的内部的窗口

所以这个例子就很简单

展示了我们怎么样

用这个InternalFrame

在一个外部的主窗口

一个JFrame里面开多个子窗口

在这一节我们了解了JSplitPane

JTappedPane还有工具栏JToolBar

以及JInternalFrame

这一节的内容就是这些

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.10-中间层容器(二)笔记与讨论

也许你还感兴趣的课程:

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