source : http://www.wsncs.zjut.edu.cn/java2010/Artical.asp?ID=122
实验七:基于Swing应用程序设计
更新日期:2009年8月23日
实验七:基于Swing应用程序设计
一 实验目的
1、熟悉Swing的基本组件,包括多行文本输入框、带滚动面板和按钮等;
2、熟悉布局管理器
3、了解GUI图像用户界面的设计方法
4、掌握Java组件的事件处理机制
5、掌握图形用户界面程序与输入输出流的综合应用
二 实验原理
1、Swing组件
在javax.swing包中,定义了两种类型的组件:顶层容器(JFrame,JApplet,JDialog和JWindow)和轻量级组件。Swing组件都是AWT的Container类的直接子类和间接子类。类的层次结构如下:
java.awt.Component
-java.awt.Container
-java.awt.Window
-java.awt.Frame-javax.swing.JFrame
-javax.Dialog-javax.swing.JDialog
-javax.swing.JWindow
-java.awt.Applet-javax.swing.JApplet
-javax.swing.Box
-javax.swing.Jcomponet
组件从功能上分可分为:
1) 顶层容器:JFrame,JApplet,JDialog,JWindow共4个
2) 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar
3) 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.
4) 基本控件:实现人际交互的组件,如Jbutton, JComboBox, JList, JMenu, JSlider, JtextField。
5) 不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel, JProgressBar, ToolTip。
6) 可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser, JFileChoose, JFileChooser, Jtable, JtextArea。
Swing是AWT的扩展,它提供了许多新的图形界面组件。Swing组件以"J"开头,常见的组件有按钮(JButton)、文本框(JTextField)、下列框(JComboBox)标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)。
2、布局管理器
Java通过布局管理器对所有构件进行管理,以支持跨平台的动态布局效果。常见布局管理器有5种,见表1所示。
表1 常见布局管理器及特点
布局
特点
FlowLayout布局
组件按照加入的先后顺序从左到右排放,放不下再换至下一行,部件大小不变,是Applet和Panel的默认布局。
BorderLayout布局
将容器分为东(East)、南(South)、西(West)、北(North)、中(Center)五个区域,加入组件用命令:add(方位名字符串, 组件)。是Frame、Dialog的默认布局。
GridLayout布局
将容器空间分为若干行乘若干列的网格区域,组件按从左向右,从上到下的次序被加到各单元格中,组件的大小将调整为与单元格大小相同。
CardLayout布局
将组件叠成卡片的形式,每个组件占用一块卡片,通过卡片的翻动选择要显示的组件。
GridBagLayout布局
在GridLayout的基础上发展而来,将整个容器分成若干行、列组成的单元,但各行可以有不同的高度,每栏也可以有不同的宽度,一个部件可以占用一个、也可以占用多个单元格。
3、Swing图形用户界面设计流程
Swing的程序设计一般可按照下列流程进行:
1) 引入Swing包
2) 选择"外观和感觉"
3) 设置顶层容器
4) 设置按钮和标签
5) 向容器中添加组件
6) 在组件周围添加边界
7) 进行事件处理
4、事件处理
(1) 事件处理机制
l 涉及对象有事件源、事件、事件处理者(监听者)。事件源是发生事件的对象;事件对象是提供事件相关信息的对象;事件处理者则是消化事件,完成特定处理的对象。
l Java采用委托(授权)事件处理机制;事件源对其可能发生的事件分别授权不同的事件处理者处理;通过如下命令注册监听者:
addXXXListener(XXXListener a);
其中,XXX与相应事件类型相关,例如:按钮点击动作事件对应标记为“Action”.
要注销监听者使用removeXXXListener(XXXListener a);
l 事件处理者必须实现某类事件相对应的接口,只有符合接口规范的对象才能作为事件处理者,通过编写相应方法实现事件的处理。
例如,ActionListener接口中定义了如下方法用来处理事件。
public void actionPerformed(ActionEvent e);
l Java为每类事件提供了一个相应的接口。
(2) 事件与事件处理
l java.util.EventObject是所有事件类的父类;java.awt.AWTEvent是所有AWT事件类的父类,其包括低级事件和基于语义的高级事件。
l XXXEvent对应的事件处理接口通常为XXXListener,常见接口的事件处理方法见表2。
表2事件接口及处理方法
描述信息
接口名称
方法(事件)
点击按钮、点击菜单项、文本框按回车等动作
ActionListener
actionPerformed(ActionEvent)
选择了可选项的项目
ItemListener
itemStateChanged(ItemEvent)
窗口事件
WindowListener
windowClosing(WindowEvent)
windowOpened(WindowEvent)
windowIconified(WindowEvent)
windowDeiconified (WindowEvent)
windowClosed(WindowEvent)
windowActivated(WindowEvent)
windowDeactivated(WindowEvent)
l 事件适配器
Java中为那些具有多个方法的监听者接口提供了事件适配器类,这个类通常命名为XxxAdapter,在该类中以空方法体实现了相应接口的所有方法,程序员设计可通过继承适配器类来编写监听者类,在类中只需给出关心的方法,从而减轻工作量。
l 在事件处理代码中区分事件源
在事件处理代码中可通过相应的方法得到事件源对象或与事件源相关的信息,见表3,通过这些信息可区分事件源。
表3 在事件处理代码中区分事件源
事件类型
方法
作用
ActionEvent
getSource()
返回事件对象对应的事件源对象
getActionCommand()
返回动作命令字符串
WindowEvent
getWindow()
返回窗体事件对应的窗体对象
ItemEvent
getItemSelectable()
返回选择事件对应的事件源对象
KeyEvent
getKeyChar()
返回键盘事件按键对应的字符
getKeyCode()
返回键盘事件所按键的编码值
5、读写文件
(1)面向字节的文件访问
l 以二进制文件作为数据源。FileInputStream类和FileOutputStream类分别用于文件的读、写访问。
l 利用InputStream和OutputStream的方法可实现文件的读写操作。
l 可用DataInputStream对FileInputStream流进行过滤;用DataOuputStream对FileOutputStream流进行过滤,以实现特定数据类型数据的读写。
(2)面向字符的文件访问
l 以字符文件作为数据源。包括:FileReader类和FileWriter类分别用于字符文件的读、写访问。
l 基于字符流的数据读写方法与基于字节流的类似,只是将读写的单位由字节改为字符,方法中的字节数组参数相应改为字符数组。例如:
int read(char b[])表示从文件读数据填满数组,返回读到的字符数。
l 可用BufferedReader对FileReader流进行过滤;用BufferedWriter对FileWriter流进行过滤,其中包含newLine()方法可写入一个换行。
三 实验环境
1、JDK1.6 for windows
2、Eclipse3.3或JCreator4.0
3、JDK API 6
4、PC机配置要求:
CPU
最低CR 1GHz,建议P4 2.0以上
内存
最低256M,建议512M以上
硬盘容量
10G以上
操作系统
Windows 2000 系列、Windows XP 系列
四 实验内容和步骤
1、实验内容
使用Swing编写一个支持中文文本编辑程序TextEdit.java,要求如下:
① 用户界面大小为400×200像素,如下图所示:
② 程序启动后,多行文本输入框TextArea中显示当前目录下myText.txt文件中原有的内容,如果该文件不存在,则新建该文件。
③ “保存”按钮功能:将多行文本输入框JTextArea中的内容写入myText.txt文件中保存。
④ “取消”按钮功能:将多行文本输入框JTextArea中的内容清空。
⑤ “退出”按钮功能:退出程序
2、实验步骤
(1) 加载组件和事件处理以及输入输出流的包:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
(2)声明文本编辑程序的类,并继承顶层容器JFrame,实现事件处理的接口:
class TextEdit extends JFrame implements ActionListener
(3)定义用户登录界面的组件,包括文本框JTextArea、三个按钮JButton以及读写文件名等:
JTextArea text;
JButton save,cancel,exit;
String fileName="myText.txt";
(4)定义构造方法,实例化各组件,实现文本编辑程序的界面布局:
public TextEdit(){
setTitle("文本编辑器");
text=new JTextArea();
text.setLineWrap(true);
text.setWrapStyleWord(true);
JScrollPane area=new JScrollPane(text);
text.setText(readFile(fileName));
save=new JButton(" 保 存 ");
cancel=new JButton(" 取 消 ");
exit=new JButton(" 退 出 ");
JPanel p1=new JPanel();
p1.add(save);
p1.add(cancel);
p1.add(exit);
getContentPane().add(area,BorderLayout.CENTER);
getContentPane().add(p1,BorderLayout.SOUTH);
setSize(400,200);
setVisible(true);
}
(5)对下拉框和三个按钮注册事件监听
save.addActionListener(this);
cancel.addActionListener(this);
exit.addActionListener(this);
(6)实现按钮事件监听器接口的方法
public void actionPerformed(ActionEvent e){
if(e.getSource()==save){
try{
//将文本框的内容保存写入文件中
}
else if(e.getSource()==cancel){
//清空文本框的内容
}
else if(e.getSource()==exit){
//退出程序
}
}
(7)读取文本文件的内容,并将内容返回
public String readFile(String fileName){
//读取文本文件fileName的内容,并将内容返回
}
(8)实现main方法,测试用户登录程序
public static void main(String args[]){
new TextEdit();
}
练习
1、基于swing,综合使用布局管理器创建并显示一个基本型的计算器界面。类的名称为MyCalculator。界面样式参考Windows中的计算器,但不需要菜单,也不需要实现事件响应。
2、基于swing,设计一个类似于Windows中的记事本程序。要求有“文件”和“帮助”菜单。文件菜单中含有“新建”、“打开”、“保存”、“另存为”、“退出”几个菜单项。帮助菜单中有一个“关于”菜单项。请实现所有的菜单功能。打开或保存文件时使用JFileChooser类。仅能够打开或保存为.txt文件。
五 实验报告要求
①实验名称
②实验内容说明
③程序源代码
④实验步骤,实验中出现的问题,观察到的结果
⑤实验总结
浙江工业大学·计算机科学与技术学院·Java程序设计课程组
CopyRight 2009
分享到:
相关推荐
标题: "基于Swing应用程序设计:一个简易的文本编辑框" 这个标题表明我们将讨论如何使用Java的Swing库来设计一个基本的文本编辑器。Swing是Java提供的一个用于构建图形用户界面(GUI)的工具包,它包含了各种组件,如...
Swing应用程序框架是Java开发GUI(图形用户界面)应用程序的一种核心工具,由Sun Microsystems(现已被Oracle收购)设计。这个框架提供了丰富的组件、事件处理机制和可定制的外观,使得开发者能够构建功能强大的桌面...
Java Swing是Java编程语言中用于构建桌面应用程序的GUI(图形用户界面)工具包。它是Java Foundation Classes (JFC) 的一部分,提供了丰富的组件库,允许开发者创建功能丰富的、交互式的用户界面。本教程将深入探讨...
6. **外观和感觉**:探讨如何改变Swing应用程序的视觉风格,以适应不同的操作系统或自定义需求。 7. **对话框和窗口**:掌握如何使用JOptionPane和JDialog创建提示对话框,以及如何管理多个窗口间的交互。 8. **国际...
Swing提供了轻量级的组件,这意味着它们完全由Java代码实现,这使得Swing应用程序可以在任何支持Java的平台上运行,无需依赖操作系统特定的GUI库。 在"精通Java Swing程序设计"中,我们将深入探讨以下关键知识点: ...
该项目是一款采用SpringBoot、Swing、H2数据库和JPA构建的桌面应用程序设计源码,包含43个文件,涵盖17个Java源文件、13个PNG图像文件、3个表单文件、2个SQL和SVG文件,以及其他相关配置和文档。该应用程序适用于...
Java Swing 是Java GUI(图形用户界面)开发的重要组成部分,它提供了丰富的组件库,使得开发者能够构建功能强大且具有视觉吸引力的桌面应用程序。本教程将深入探讨Java Swing程序设计,帮助你掌握这一关键技术。 ...
【基于Swing的多线程聊天室】是一个Java应用程序,它利用了Swing库来构建图形用户界面(GUI)并采用多线程技术实现多用户之间的实时通信。Swing是Java Standard Edition(Java SE)的一部分,提供了丰富的组件库用于...
首先,Swing组件是轻量级的,它们大部分是用Java实现的,这使得Swing应用程序可以在不同的操作系统上保持一致的外观和行为。例如,JFrame是Swing中的顶级容器,它通常作为应用程序的主窗口;JButton用于创建可点击的...
7. **SwingWorker**:在Swing应用程序中处理耗时任务时,应使用SwingWorker。它确保了后台任务不会阻塞用户界面,并允许在任务执行期间更新UI。 8. **国际化(i18n)**:Swing支持应用程序的国际化,可以方便地切换...
本资源"深入浅出JAVA Swing程序设计 书+代码"旨在帮助开发者深入理解Swing,并通过实例代码进行实践,提升Java桌面应用的开发能力。 Swing提供了一套完全由Java实现的组件,这些组件不仅功能强大,而且在跨平台兼容...
根据提供的文件信息,可以看出标题与描述提及的是关于Java Swing程序...通过以上内容,我们可以了解到Swing为Java开发者提供了强大而灵活的GUI开发工具,掌握了这些基础知识后,便可以着手创建自己的Swing应用程序了。
7. **JFrame与JApplet**: JFrame是Swing应用程序的主窗口,它承载其他组件。JApplet则用于在网络浏览器中运行Swing应用,但随着现代Web技术的发展,JApplet的使用已逐渐减少。 8. **SwingWorker**: SwingWorker类...
以下是关于JAVA Swing图形界面程序设计的一些关键知识点: 1. **容器与组件**:在Swing中,`JFrame`是顶级容器,用于创建窗口。`JLabel`, `JTextField`, 和 `JButton` 是常用的组件。`JLabel` 用于显示文本或图像,...
《Java精通Swing程序设计》是一本专注于Java GUI编程的深度指南,主要讲解如何使用Swing库来构建功能丰富的桌面应用程序。Swing是Java平台上用于创建用户界面的主要工具包,它提供了大量的组件和布局管理器,使得...
Java Swing 是Java提供的一种用于构建桌面应用程序用户界面的图形用户界面工具包,它属于Java Foundation Classes (JFC)的一部分。这个“Java基于Swing实现的简单聊天室,支持多人在线闲谈.zip”文件是一个示例项目...