`
aerchi
  • 浏览: 423891 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
文章分类
社区版块
存档分类
最新评论

基于Swing应用程序设计

 
阅读更多

实验七:基于Swing应用程序设计

一实验目的

1、熟悉Swing的基本组件,包括多行文本输入框、带滚动面板和按钮等;

2、熟悉布局管理器

3、了解GUI图像用户界面的设计方法

4、掌握Java组件的事件处理机制

5、掌握图形用户界面程序与输入输出流的综合应用

二实验原理

1Swing组件

javax.swing包中,定义了两种类型的组件:顶层容器(JFrameJAppletJDialogJWindow)和轻量级组件。Swing组件都是AWTContainer类的直接子类和间接子类。类的层次结构如下:

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涉及对象有事件源、事件、事件处理者(监听者)。事件源是发生事件的对象;事件对象是提供事件相关信息的对象;事件处理者则是消化事件,完成特定处理的对象。

lJava采用委托(授权)事件处理机制;事件源对其可能发生的事件分别授权不同的事件处理者处理;通过如下命令注册监听者:

addXXXListener(XXXListener a);

其中,XXX与相应事件类型相关,例如:按钮点击动作事件对应标记为“Action”.

要注销监听者使用removeXXXListener(XXXListener a);

l事件处理者必须实现某类事件相对应的接口,只有符合接口规范的对象才能作为事件处理者,通过编写相应方法实现事件的处理。

例如,ActionListener接口中定义了如下方法用来处理事件。

public void actionPerformed(ActionEvent e);

lJava为每类事件提供了一个相应的接口。

(2)事件与事件处理

ljava.util.EventObject是所有事件类的父类;java.awt.AWTEvent是所有AWT事件类的父类,其包括低级事件和基于语义的高级事件。

lXXXEvent对应的事件处理接口通常为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文件。

五实验报告要求

①实验名称

②实验内容说明

③程序源代码

④实验步骤,实验中出现的问题,观察到的结果

⑤实验总结



http://www.wsncs.zjut.edu.cn/java2010/Artical.asp?ID=122

分享到:
评论

相关推荐

    基于Swing应用程序设计:一个简易的文本编辑框

    一个简易的文本编辑框super("记事本"); JMenuBar mBar=new JMenuBar(); setJMenuBar(mBar); JMenu []m={new JMenu("文件"),new JMenu("帮助")}; JMenuItem [][]mI={ {new JMenuItem("新建"),new ...

    JAVA程序设计 基于java-swing的学生信息管理系统(项目源码+个人课程答辩报告+项目手敲视频教程)

    3. 对Java-swing的知识有一定的了解,需要学习总结应用相关知识或者想找项目练手的同学。 实现的功能: 实现功能包括学生信息的新增、编辑、查看、删除;班级信息管理、包括班级信息的新增、编辑、查看、删除。其中...

    基于设计模式的Java swing交互式界面模式的应用研究与实现

    具有众多特点是跨平台的优点,采用java编写应用程序界面和web界面越来越流 行。而swing是目前Java中的一个重要的界面工具组类库,是建立GUI的强大工 具,它比起Java的其他界面组件来说具有更多的优点,相信以后用...

    java程序设计 基于java-swing,MySQL数据库,MVC设计模式学生信息管理系统(项目源码答辩报告+项目视频教程)

    3. 对Java-swing的知识有一定的了解,需要学习总结应用相关知识或者想找项目练手 实现的功能: 实现功能包括学生信息的新增、编辑、查看、删除;班级信息管理、包括班级信息的新增、编辑、查看、删除。其中学生、...

    基于swing和mysql的JDBC系统

    这个基于Swing和MySQL的课程管理系统采用了以下关键技术: Java Swing:Java Swing是Java提供的图形用户界面(GUI)工具包,用于创建跨平台的窗口应用程序。它提供了一系列的组件和布局管理器,使得开发者可以轻松...

    基于Java的Swing界面设计源码

    本设计源码提供了一个基于Java的Swing界面。项目包含43个文件,主要使用Java编程语言。...该Swing界面是一个JAVA-Swing的使用示例,适合用于学习和实践Java技术,以及开发基于Swing界面的应用程序。

    计算器应用程序的设计实现

    设计要求: 1. 设计的计算器应用程序是基于AWT或者Swing的 2. 可以完成加减乘除以及取余运算 3. 在能够完成上面的加减乘除取余的基础上增加日期计算功能,能够计算两个日期之间相差的天数

    数据结构课程设计-基于Java swing的股票交易模拟系统(源码+数据库+ppt).zip

    1.面向对象程序设计方法,类模板的应用:分析模型给出数(报表)、形(图形)、文(资讯); 2.产生随机数的方法:用随机数来代替传统股票系统从服务器得到的数据; 3.显示模拟的股票价格走势图; 4.链表的应用,...

    基于java swing和mysql的学生管理系统

    这个基于Swing和MySQL的课程管理系统采用了以下关键技术: Java Swing:Java Swing是Java提供的图形用户界面(GUI)工具包,用于创建跨平台的窗口应用程序。它提供了一系列的组件和布局管理器,使得开发者可以轻松...

    Java课程设计-基于Java swing带GUI界面的图书管理系统(源码+数据库+报告).zip

    通过应用awt等包,合理的添加了按钮、菜单、文本框、文本区、表格等组件类,还包含窗口、面板等容器类,经过设计者合理的布局,完成了窗体的设计,并通过建立JDBC-ODBC桥接器连接到mysql数据库后,向数据库发送SQL...

    swing界面设计之JTree

    (二) 适用于各类Swing应用的通用数据验证模块 39 项目创建好后,加入类库: 41 然后写一个persistence bean: 41 Java代码 41 我称这个类为HibernateValidationUI,代码如下: 43 Java代码 43 类中用到的Java2...

    基于Java面向对象程序设计课程报告.doc.doc

    基于Java面向对象程序设计课程报告 .word教育资料基于Java语言的简易坦克大战游戏设计课程报告摘 要: 本课程设计使用Java语言开发了一个简单坦克大战小游戏,主要采用面向对象程序设计 思想来完成程序的需求分析,...

    毕业设计-基于Swing编写的俄罗斯方块(源代码)

    毕业设计-Swing编写的俄罗斯方块 系统在生活中的应用十分广泛,无论是个人还是企业,在日常生活中都需要系统,不仅可以提高工作效率和质量,也可以提高数据准确性,以下是系统的好处: 1. 提高效率:系统可以自动化...

    基于Java+Swing实现中国象棋游戏(课程设计)

    1、寻找棋盘界面和对应的棋子图片,程序设计棋盘界面和功能菜单 2、设计不同的棋子的移动逻辑 3、棋子移动时,要有音效 4、对局开始前,双方棋子在棋盘上的摆法。 5、对局时,由执红棋的一方先走,双方轮流走一步...

    基于java swing的动画编辑器源码

    系统的设计目标是采用面向对象的程序设计技术实现一个图形绘制和图像处理的应用软件,满足普通用户对于图形图像应用程序的简单需求。 主要工作分为三类,包括基本图形绘制与编辑、图像格式识别与转换、以及动画播放...

    基于J2SE的Java程序设计毕业论文

    计算机的出现,使科技文明的发展跨入到了一个新的时代,计算机软件的应 用,使人们的工作效率成倍提高。...技术,使学习到的 Java 语言得到了融会贯通,提高了使用 Swing 编写桌面应用 程序的能力。

    《Java程序设计实训》报告 多人聊天室

    4、使用网络编程,掌握基于TCP协议的Socket编程,了解Socket编程的协议约定,掌握简单应用协议的开发。  5、使用C/S架构,对网络编程有一定的了解 二.项目概述 运用java程序编写聊天室,实现简单的聊天功能。它是...

    基于SOCKET的网络编程

    基于JAVA语言,编写一个网络应用程序。 一、实验目的 通过套接字编程结合swing框架编写即时通信工具。在知道对方ip的前提下能够发送信息给对方,并得到发送的反馈,对方得到收到的消息。双方都能够实现既是的发和收...

    员工管理系统是一个基于桌面的具有交互式 GUI 的应用程序,专为管理员维护员工数据而设计。

    这是一个用 Java 创建的基于 GUI 的桌面应用程序。 它维护员工的个人详细信息。 在此应用程序中,用户可以执行以下任务: 1. 添加员工详细信息 2. 查看员工详细信息 3. 删除员工详细信息 4. 更新员工详细信息 ...

Global site tag (gtag.js) - Google Analytics