Java 程 序 设 计 基于Swing的GUI开发 浙江工业大学软件学院 主讲教师:赵小敏 zxm@zjut.edu.cn.

Slides:



Advertisements
Similar presentations
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
自定义汇总报表 演示 作者:栗川.
项目2 字符格式和段落编排 2017年3月7日6时54分.
Java程序设计 常州信息职业技术学院(CCIT) 软件学院
UI(用户界面)集训班 Illustrator 高级班.
第 18 章 圖形使用者介面.
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之二).
在PHP和MYSQL中实现完美的中文显示
第9章 图形用户界面(GUI)设计.
Ch02 視窗Swing套件 物件導向系統實務.
2018/11/11 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
JAVA语言程序设计 第9章 图形用户界面 郑 莉.
问题 Jdbc连接数据库 下载数据库的驱动 Sql server 在微软的网站上可以下载 Sqlserver for jdbc driver
Hadoop I/O By ShiChaojie.
Java语言程序设计 第六部分 Java图形用户界面.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
武汉纺织大学传媒学院 cm.wtu.edu.cn
第六章 窗口系统和用户界面管理系统 山东大学计算机学院.
第十一章   Swing II.
第二讲 搭建Java Web开发环境 主讲人:孙娜
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
Swing高级组件 主讲:赖国荣 QQ:
視窗程式設計 10. 組合方塊與對話盒 Chih Hung Wang Reference:
Java程序设计 第15章 创建用户界面.
記事本 物件導向系統實務.
記事本 物件導向系統實務.
大学计算机基础 典型案例之一 构建FPT服务器.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
Java程序设计 第12章 图形用户界面设计入门.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第4章 Java图形用户界面设计.
CH04 視窗中元件排排坐 物件導向系統實務.
Windows 7 的系统设置.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十章 基于Swing的图形用户界面设计.
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
第4章 Java图形用户界面设计.
第四讲 客户问卷调查程序 教育部“十二五”职业教育国家规划教材
C语言程序设计 主讲教师:陆幼利.
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
PRESENTED BY OfficePLUS
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
Word中活用“艺▪图▪框” 信息技术必修(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
Visual Basic程序设计 第13章 访问数据库
第十二章 JFC/Swing 概述  Swing组件  Swing应用程序结构  JComponent类.
VRP教程 2011.
Python 环境搭建 基于Anaconda和VSCode.
YOUR SUBTITLE GOES HERE
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
LOGO HERE 单击此处添加 您的标题标题标题 PRESENTED BY JANE DOE
Presentation transcript:

Java 程 序 设 计 基于Swing的GUI开发 浙江工业大学软件学院 主讲教师:赵小敏 zxm@zjut.edu.cn

Swing概述 Swing是Java Foundation Classes(JFC) 的重要组成部分。JFC包括了开发GUI所需的组件和服务,包含如下五部分:  AWT  Java 2D  Accessibility  Drag and Drop  Swing

Swing特性 1、100%的纯Java实现 AWT中,有部分代码是C编写的。 Swing组件是用100%纯Java实现的轻量级(light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。

Swing特性 2、可插入的外观感觉(Pluggable Look and Feel,PL&F) 在AWT组件中,由于控制组件外观的对等类与具体平台相关,使得AWT组件总是只有与本机相关的外观。Swing使得程序在一个平台上运行时能够有不同的外观。用户可以选择自己习惯的外观。

Swing特性 3、Swing组件的多样化 Swing是AWT的扩展,它提供了许多新的图形界面组件。Swing组件以“J”开头,除了有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)。

Swing特性 4、支持键盘操作 在Swing组件中,使用JComponent类的registerKeyboardAction()方法,能使用户通过键盘操作来替代鼠标驱动GUI上Swing组件的相应动作。有些类还为键盘操作提供了更便利的方法。(热键)

Swing特性 5、设置边框 对Swing组件可以设置一个和多个边框。Swing中提供了各式各样的边框供用户选用,也能建立组合边框或自己设计边框。一种空白边框可以增大组件,协助布局管理器对容器中的组件进行合理的布局。

Swing特性 6、使用图标(Icon) 与AWT的部件不同,许多Swing组件如按钮、标签,除了使用文字外,还可以使用图标修饰自己。

基于Swing应用程序的一般结构 引入Swing包 选择“外观和感觉” 设置顶层容器 设置按钮和标签 向容器中添加组件 在组件周围添加边界 进行事件处理

例子:显示一个按钮,并显示按钮的单击次数,p367 12-2 基于Swing的应用程序 例子:显示一个按钮,并显示按钮的单击次数,p367 12-2

Swing组件-主要内容 JLabel JTextField和JPasswordField JButton JCheckBox和JRadioButton JComboBox JList 多选列表 键盘事件处理 JTextArea Jpanel JSlider JPopupMenu

JLabel(标签) 作用:在GUI显示文本或提示信息。 特点: 1、只显示一行只读文本,一个图像或带图像的文本。 JLabel类支持Icon的显示。 JLabel类中自带了许多设置其自身特性的方法。

JTextField和JPasswordField 在JTextField和JPasswordField中输入数据后按Enter键会激发一个事件。 如果程序注册了相应的事件监听器,监听器负责处理事件。

Jbutton(按钮) 按钮是用于触发特定动作的组件,Java提供了多种按钮。 点击按钮时,会产生一个ActionEvent事件。 GUI可以有多个按钮,但每个按钮必须有不同的标签。 JButton 可以显示Icon。

JCheckBox和JRadioButton Swing GUI 组件中包含了3种状态按钮,即JToggleButton(切换按钮)、JCheckBox(复选框)和JRadioButton(单选按钮)。它们有开/关或真/假值. 单击JCheckBox (复选框)产生ItemEvent事件,并由ItemListener处理。 ItemListener必须定义itemStateChanged()方法。 JRadioButton(单选按钮)通常成组使用,一个按钮在同一时刻只能有一个被选中。单击JRadioButton产生ItemEvent事件。 例:CheckboxTest.java、RadioButtonTest.java

JComboBox(下拉列表) JComboBox为用户提供项目列表以供选择。 JComboBox产生ItemEvent事件。 例:ComboBoxTest.java

JList(列表) JList显示出一系列选项,用户可以从中选择一个或多项。 JList激发ListSelectionEvent事件。 例:ListTest.java

多选列表 多选列表可以在JList中选择多个选项,方法是按住shift键或ctrl键。 多选列表没有和多个选择相关的事件。通常由另一个GUI组件生成的事件(外部事件)来指定处理JList中的多个选择。 例:MultipleSelection.java

键盘事件处理 在键盘上的按键被按下或释放时,生成按键事件。 按键事件的事件监听器接口是KeyListener。 如果需要判断键盘上的特定键,KeyEvent类提供了键盘上每个键的常量用来判断是否按下了特定的键。

JTextArea 支持多行文本的操作 java.lang.Object -java.awt.Component --java.awt.Container ---javax.swing.JComponent ----javax.swing.text.JTextComponent -----javax.swing.JTextArea 构造方法如下: JTextArea() JTextArea(int rows, int columns) JTextArea(String text) JTextArea(String text, int rows, int columns)

滑动条(JSlider) 滑动条使得用户能够通过一个滑块的来回移动来输入数据 JSlider(int min,int max,int value);

根面板(JRootPane)

根面板(JRootPane) 根面板由一个玻璃面板(glassPane)、一个内容面板(contentPane)和一个可选择的菜单条(JMenuBar)组成,而内容面板和可选择的菜单条放在同一分层。玻璃面板是完全透明的,缺省值为不可见,为接收鼠标事件和在所有组件上绘图提供方便。

根面板(JRootPane) JRootPane提供的方法: Container getContentPane(); //获得内容 setContentPane(Container); //设置内容面 JMenuBar getMenuBar( ); //活动菜单条 setMenuBar(JMenuBar); //设置菜单条 JLayeredPane getLayeredPane(); //获得分层面板 setLayeredPane(JLayeredPane); //设置分层面板Component getGlassPane(); //获得玻璃面板setGlassPane(Component); //设置玻璃面板

分层面板(JLayeredPane) 两种分层面板:JLayeredPane,JDesktopPane。 JDesktopPane是JLayeredPane的子类,专门为容纳内部框架(JInternalFrame)而设置。 向一个分层面板中添加组件,需要说明将其加入哪一层,指明组件在该层中的位置:add(Component c, Integer layer, int position)

常用中间容器 1.面板(JPanel) 面板(JPanel)是一个轻量容器组件,用法与Panel相同,用于容纳界面元素,以便在布局管理器的设置下可容纳更多的组件,实现容器的嵌套。Jpanel, JscrollPane, JsplitPane, JinteralFrame都属于常用的中间容器,是轻量组件。Jpanel的缺省布局管理器是FlowLayout。

常用中间容器 2.滚动窗口(JScrollPane) JscrollPane是带滚动条的面板,主要是通过移动JViewport(视口)来实现的。JViewport是一种特殊的对象,用于查看基层组件,滚动条实际就是沿着组件移动视口,同时描绘出它在下面"看到"的内容。

滚动窗口(JScrollPane)效果图

常用中间容器 3.分隔板(JSplitPane) JSplitPane提供可拆分窗口,支持水平拆分和垂直拆分并带有滑动条。常用方法有: addImpl(Component comp,Object constraints,int index)//增加指定的组件 setTopComponent(Component comp) //设置顶部的组件 setDividerSize(int newSize) //设置拆分的大小 setUI(SplitPaneUI ui) //设置外观和感觉

分隔板(JSplitPane)效果图

常用中间容器 4.选项板(JTabbedPane) JTabbedPane提供一组可供用户选择的带有标签或图标的开关键。常用方法: add(String title,Component component) //增加一个带特定标签的组件 addChangeListener(ChangeListener l) //选项板注册一个变化监听器

选项板(JTabbedPane)效果图

常用中间容器 5.工具栏(JToolBar) JtoolBar是用于显示常用工具控件的容器。用户可以拖拽出一个独立的可显示工具控件的窗口。常用方法有:   JToolBar(String name) //构造方法   getComponentIndex(Component c) //返回一个组件的序号   getComponentAtIndex(int i) //得到一个指定序号的组件

工具栏(JToolBar)效果图 工具栏在左上角

常用中间容器 6.内部框架(JInternalFrame)

常用中间容器 6.内部框架( JInternalFrame) 如同一个窗口在另一个窗口内部 frame=new JFrame(“InternalFrameDemo”); JDesktopPane desktop=new JDesktopPane(); MyInternalFrame myframe=new MyInternalFrame(); desktop.add(myframe); myframe.setSelected(true); frame.setContentPane(desktop);

常用中间容器 6.内部框架( JInternalFrame)特点 (1)必须把内部框架添加到一个容器中(通常为JDesktopPane),否则不显示; (2)不必调用show()或setVisible()方法,内部框架随所在的容器一起显示; (3)必须用setSize()或pack()或setBounds方法设置框架尺寸,否则尺寸为零,框架不能显示;

常用中间容器 6.内部框架(JInternalFrame) (4)可以用setLocation()或setBounds( ) 方法设置内部框架在容器中的位置,缺省值为0,0,即容器的左上角; (5)象顶层JFrame一样,对内部框架添加组件也要加在它的内容面板上; (6)在内部框架中建立对话框,不能使用JDialog作为顶层窗口,必须用JOptionPane或JInternalFrame; (7)内部框架不能监听窗口事件,可以通过监听与窗口事件类似的内部框架(JInternalFrameEvent)处理内部框架窗口的操作。

文件选择器(JFileChooser)

菜单( JMenu ) JMenu与AWT的菜单Menu的不同之处是它可以通过 setJMenuBar(menubar)将菜单放置到容器中的任意地方

菜单 JMenuBar类(JComponent的子类)包含所有菜单栏所必须的方法 JMenuItem类(AbstractButton的子类)包含管理菜单项所必须的方法 JMenu类(JMenuItem的子类)包括管理菜单所必须的方法 JCheckBoxMenuItem类(JMenuItem的子类)包括管理具有开关状态的菜单项所必须的方法,当选中某个JCheckBoxMenuItem时,会在菜单项的左边出现一个对号。

进程条(JProgressBar) 进程条是提供一个直观的图形化的进度描述, 从"空"到"满"的过程。 JProgressBar(int min,int max);

表格(JTable) 表格是Swing新增加的组件,主要功能是把数据以二维表格的形式显示出来。使用表格,依据M-V-C的思想,最好先生成一个MyTableModel类型的对象来表示数据,这个类是从AbstractTableModel类中继承来的,其中有几个方法是一定要重写,例如getColumnCount,getRowCount,getColumnName,getValueAt。因为Jtable会从这个对象中自动获取表格显示所必需的数据,AbstractTableModel类的对象负责表格大小的确定(行、列)、内容的填写、赋值、表格单元更新的检测等等一切跟表格内容有关的属性及其操作。JTable类生成的对象以该TableModel为参数,并负责将TableModel对象中的数据以表格的形式显示出来。

表格(JTable) JTable类常用的方法有: getModel() //获得表格的数据来源对象 JTable(TableModel dm) //dm对象中包含了表格要显示的数据 //下列两个构造方法,第一个参数是数据,第二个参数是表格第一行中显示的JTable(object[][]rowData,object[]columnNams); JTable(Vector[][]rowData,Vector[]columnNams);

树(JTree) 要显示一个层次关系分明的一组数据,用树状图表示能给用户一个直观而易用的感觉,JTree类如同Windows的资源管理器的左半部,通过点击可以“打开”、“关闭”文件夹,展开树状结构的图表数据。JTree也是依据M-V-C的思想来设计的,Jtree的主要功能是把数据按照树状进行显示,其数据来源于其它对象。 构造方法: JTree(Object[] value); JTree(Vector value);

树(JTree)显示效果

作业 利用Swing组件编写一个用户登录功能 利用Swing组件编写一个带菜单的标准版计算器功能。