Java最新实用教程第 11章图形用户界面
Java最新实用教程
2009年 7月 27日星期一 2
学习目的:
了解 AWT与 Swing编程
初步掌握 Java中的界面规划和设计
掌握 Swing常用组件的使用
掌握 Java的事件处理机制与事件模型
了解 Java中的多媒体操作
学习重点:
掌握界面规划中的基本概念及各自的作用
掌握事件处理机制和事件模型
掌握常用组件的使用方法(学会使用 API文档)
Java最新实用教程
2009年 7月 27日星期一 3
第 11章 图形用户界面本章提要:
1,Applet编程基础
2,GUI基础
3,Java中的常用 GUI组件
4,Java的事件处理机制和事件模式
5,Java的多媒体应用
Java最新实用教程
2009年 7月 27日星期一 4
11.1.1 Applet类
Applet类位于包 java.applet中,可以完成以下功能:
1,可以用来包含其它界面组件
2,可以响应基包含的组件引发的事件
11.1 Applet基础
Applet也称小程序,是在客户端运行的 Java程序。
Java最新实用教程
2009年 7月 27日星期一 5
11.1.2 Applet的运行环境运行 Applet的客户端必须安装 JRE( Java运行时环境)
1,可以运行于支持 Java的浏览器
2,可以使用 appletViewer.exe运行
11.1 Applet基础
Java最新实用教程
2009年 7月 27日星期一 6
11.1.3 Applet的运行机理服务器客户端浏览器
1,请求网页
2,下载网页网页
<html>

<Applet … >
</Applet>

3,运行网页服务器
4,请求 Applet
5,下载 Applet
Applet
字节码
6,运行 Applet
11.1 Applet基础
Java最新实用教程
2009年 7月 27日星期一 7
11.1.4 Applet应用程序接口( API)
11.1 Applet基础方法原型 功能
public void init( ) 第一次被创建,初次运行初始化 Applet时调用
public void start( ) 当 Applet进入浏览器中,并且允许启动时调用
public void paint(Graphics g) 作为 update()的一部分调用,以便对画布进行绘制
public void stop() 每次 Applet从浏览器的视线中离开时调用
public void destroy() Applet不再需要,将它从页面中卸载时调用
Java最新实用教程
2009年 7月 27日星期一 8
11.2 图形用户界面
11.2.1 容器容器( Container) 就是可以包含其它组件的组件。
常见的容器有:面板( Panel) 和窗体( Window) 两大类,Window又包含 Frame,Dialog和 JWindow等。
图形用户界面( GUI),是现在程序设计的规范。
Java最新实用教程
2009年 7月 27日星期一 9
11.2.2 组件组件( Component)就是 GUI界面中的每个元素,任何一个组件都是 java.awt.Component的子类对象。
组件是 GUI中最基本的元素。
11.2 图形用户界面
Java最新实用教程
2009年 7月 27日星期一 10
11.2.3 识别用户窗口界面的组件用户界面( UI) 的两种常用分类:
命令行方式和图形用户界面( GUI)
在 Java中,GUI可以使用抽象窗口工具集( AWT) 和
Swing来实现。
11.2 图形用户界面
Java最新实用教程
2009年 7月 27日星期一 11
11.2.4 颜色类与字体类颜色类( Color) 的使用:
public Color(int red,int green,int blue );
public Color(int r,int g,int b,int alpha);
public Color(float r,float g,float b);
public Color(int RGB);
11.2 图形用户界面
Java最新实用教程
2009年 7月 27日星期一 12
11.2.4 颜色类与字体类字体类( Font) 的使用:
public Font(String name,int style,int size);
name是要使用的字体的名称,style是字型,可以使用 Font.PLAIN( 常规),Font.BOLD( 粗体)或
Font.ITALIC( 斜体),也可以用 | 对粗体和斜体进行或运算得到粗斜体。
11.2 图形用户界面
Java最新实用教程
2009年 7月 27日星期一 13
11.2.4 颜色类与字体类
public void paint(Graphics g) {
Font newFont = null;
for (int i = 0; i < fontNames.length && i < 10 ; i++ ) {
newFont = new Font(fontNames[i],Font.PLAIN,18); //字体对象
g.setFont(newFont); //设置当前字体
g.setColor(colors[ i % 2]); //设置当前颜色
g.drawString(fontNames[i],10,50 + i * 21);
}
}
11.2 图形用户界面
Java最新实用教程
2009年 7月 27日星期一 14
11.3.1 AWT包中类的继承关系
11.3 图形包以及类的继承关系
Component
Button CheckBox Container Choice Canvas LabelTextComponent
Panel Window TextArea TextField
Applet Frame Dialog
java.awt包中类的体系结构
Java最新实用教程
2009年 7月 27日星期一 15
11.3.2 Swing包中类的继承关系
11.3 图形包以及类的继承关系
Container
Panel Window JComponent
JFrame
Frame Dialog
javax.swing包中类的体系结构
JDialog
AbstractButton JPanel JLabel JText
JToggleButton JButton JTextField JTextArea
JCheckBox JRadioButton
Java最新实用教程
2009年 7月 27日星期一 16
11.3.3 事件处理模型
EventObject
ActionEvent AdjustmentEvent ComponentEvent TextEventItemEvent
AWT事件类的体系结构
FocusEvent ContainerEvent InputEvent PaintEventWindowEvent
MouseEvent KeyEvent
11.3 图形包以及类的继承关系
Java最新实用教程
2009年 7月 27日星期一 17
11.4 面板和画布
11.4.1 面板( Panel)
面板( Panel) 是一种无边框的容器,通常用来组织界面中的其它组件(还可以包括其它面板)。
Panel()使用缺省的布局管理方式创建一个面板对象
Panel(LayoutManager layout) 指定布局管理方式
public Component add(Component comp);
面板主要用来规划界面,画布用来自定义绘图。
Java最新实用教程
2009年 7月 27日星期一 18
11.4 面板和画布
11.4.2 画布( Canvas)
画布( Canvas) 是一个用来绘图的矩形背景组件,在应用程序中,既可以进行绘制图形,也可以接收各种事件
(比如响应鼠标和键盘事件等)。
Canvas()
public void paint(Graphics g)
public void repaint()
public void update(Graphics g)
Java最新实用教程
2009年 7月 27日星期一 19
11.5 布局管理器
11.5.1 FlowLayout
FlowLayout的布局原则:从左到右,从上到下
FlowLayout() //默认对齐方式和间距
FlowLayout(int alignment) //默认间距
FlowLayout(int alignment,int horz,int vert)
指定对齐方式和间距布局管理器用来管理应用程序的界面。
Java最新实用教程
2009年 7月 27日星期一 20
11.5 布局管理器
11.5.2 BorderLayout
BorderLayout将容器划分为东、西、南、北、中。
BorderLayout() //默认横纵间距
BorderLayout(int horz,int vert) //指定间距例如,要将一个按钮加到南边:
container.add(btnOK,BorderLayout.SOUTH);
Java最新实用教程
2009年 7月 27日星期一 21
11.5.2 BorderLayout
11.5 布局管理器
Java最新实用教程
2009年 7月 27日星期一 22
11.5 布局管理器
11.5.3 GridLayout
GridLayout把容器平均划分为行和列的网格,所有的组件被放在网格里,尺寸大小都一样
GridLayout() //生成一个单列的网格
GridLayout(int row,int col) //指定行数和列数
GridLayout(int row,int col,
int horz,int vert)
//指定行数,列数,行距和列距
Java最新实用教程
2009年 7月 27日星期一 23
11.5.3 GridLayout
11.5 布局管理器
Java最新实用教程
2009年 7月 27日星期一 24
11.5.4 CardLayout
CardLayout可以存储多个不同的布局,每个布局就像一个卡片组中的一张卡片,在一个时刻只能显示一张卡片在顶层。
CardLayout() //水平和垂直的间距为 0
CardLayout(int hgap,int vgap) //指定间距
void show(Container cp,String name) //显示指定容器中的标签卡片
11.5 布局管理器
Java最新实用教程
2009年 7月 27日星期一 25
11.5.5 GridBagLayout
11.5 布局管理器
GridBagLayout将组件排列在行和列组成的网格中,
但组件的大小可以不必相同,并且不一定要从左到右,从上到下排列,而是通过一个辅助类 GridBagConstraints类来协助完成。
GridBagLayout() //生成一个布局管理器
GridBagConstraints() //需要使用约束对象
gb.setConstraints(c,gbc); //设置组件的属性
cp.add(c); //添加组件 c到容器 cp中
Java最新实用教程
2009年 7月 27日星期一 26
11.5.5 GridBagLayout
11.5 布局管理器
Java最新实用教程
2009年 7月 27日星期一 27
11.5.6 BoxLayout
BoxLayout,既有 GridBagLayout的优点,又去掉了其复杂性,在 java.swing包中。
BoxLayout(Container target,int axis) //按指定的轴心 axis生成一个布局管理器对象
jpv.setLayout(new BoxLayout(jpv,BoxLayout.Y_AXIS))
for (int i = 1; i <= 5; i++) {
jpv.add(new JButton("Vert " + i));
}
11.5 布局管理器
Java最新实用教程
2009年 7月 27日星期一 28
11.5.7 创建 Panel和复杂布局在构建复杂的界面时,建议通过创建多个面板(
Panel),在不同的面板中使用不同的布局管理方式来处理界面。在复杂界面的布局管理中,面板是一个非常重要的容器。
11.5 布局管理器
Java最新实用教程
2009年 7月 27日星期一 29
11.6.1 标签( JLabel)
JLabel() //创建空标签
JLabel(String text) //创建指定文本的标签
JLabel(Icon image) //创建指定图像的标签
public void setText(String text) //设定文本
public String getText() //返回文本一般使用 java.swing包来完成 Java程序界面设计。
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 30
11.6.2 按钮( JButton)
JButton(String text)//按钮标题为 text。
JButton(Icon icon) //按钮图标为 icon
void setText(String text)
void setIcon(Icon icon)
void addActionListener(ActionListener l)
public void actionPerformed(ActionEvent e)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 31
11.6.3 文本框( JTextField)
JTextField(String text)
JTextField(String text,int cols)
public void setText(String text)
public void setEditable(boolean b)
public String getText()
public void addCaretListener(CaretListener l)
void addActionListener(ActionListener l)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 32
11.6.4 文本区域( JTextArea)
JTextArea(int rows,int cols)
JTextArea(String text,int rows,int cols)
public void setLineWrap(boolean wrap)
public void setTabSize(int size)
public String getText()
public void getLineCount()
public void addCaretListener(CaretListener l)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 33
11.6.5 口令域( JPasswordField)
JPasswordField(int cols)
JPasswordField(String text,int cols)
public void setEchoChar(char ch)
public String getPassword()
public boolean echoCharIsSet()
public void addActionListener(ActionListener l)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 34
11.6.6 复选框( JCheckBox)
JCheckBox(String text)
JCheckBox(String text,boolean selected)
JCheckBox(String text,Icon icon)
public String getText()
public Icon getIcon()
public setEnabled(boolean b)
public void addItemListener(ItemListener l)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 35
11.6.6 单选按钮 ( JRadioButton)
public JRadioButton(Iconicon)
public JRadioButton(Iconicon,booleanselected)
public JRadioButton(Stringtext)
public String getText()
public Icon getIcon()
public setEnabled(boolean b)
public void addItemListener(ItemListener l)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 36
11.6.7 列表框 ( JList)
public JList()
public JList(ListModel dataModel)
public JList(Object [] listData)
public int getSelectedIndex()
public Object getSelectedValue()
public boolean getValueIsAdjusting()
public void addListSelectionListener(
ListSelectionListenerlistener)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 37
11.6.7 组合 框 ( JComboBox)
public JComboBox()
public JComboBox(ComboBoxModelaModel)
public JList(Object[]listData)
public void addItem(ObjectanObject)
public int getItemCount()
public int getSelectedIndex()
public void addItemListener(ItemListenerl)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 38
11.6.8 滚动条 ( JScrollBar)
public JScrollBar()
public JScrollBar(intorientation)
public JScrollBar(intorientation,intvalue,
intextent,intmin,intmax)
public int getMaximum()
public int getValue()
public void addAdjustmentListener(
AdjustmentListenerl)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 39
11.6.9 进度条 ( JProgressBar)
public JProgressBar()
public JProgressBar(intorient)
public JProgressBar(intdir,intmin,intmax)
public int getMaximum()
public int getValue()
public void setStringPainted(booleanb)
public void addChangeListener(ChangeListenerl)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 40
11.6.10 表格 ( JTable)
public JTable(TableModeldm)
public JTable(intnumRows,intnumColumns)
public JTable(Object[][]rowData,
Object[]columnNames)
public void addColumn(TableColumnaColumn)
public String getColumnName(intcolumn)
public int getSelectedColumn()
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 41
11.6.10 表格 ( JTable)
11.6 常用组件
Java最新实用教程
2009年 7月 27日星期一 42
11.7.1 窗口类( Frame)
public Frame(Stringtitle)
public Frame(Stringtitle,
GraphicsConfigurationgc)
public String getTitle()
public void setResizable(booleanresizable)
public void addWindowListener(WindowListenerl)
应用程序的主容器是窗口;最常见的操作是菜单。
11.7 窗口和菜单
Java最新实用教程
2009年 7月 27日星期一 43
11.7.2 菜单条、菜单和菜单项一个应用程序中,应该有一个菜单条( JMenuBar);
一个菜单条通常会由多个菜单( JMenu) 组成;
一个菜单通常又会是由菜单项( JMemuItem) 组成的。
菜单条又称为菜单栏,是整个菜单和菜单项的容器。
11.7 窗口和菜单
Java最新实用教程
2009年 7月 27日星期一 44
11.7.2 菜单条、菜单和菜单项
public JMenuBar()
public JMenu(Strings)
public JMenuItem(Stringtext)
public JMenuItem(Iconicon)
public void setEnabled(booleanb)
public void addActionListener(ActionListenerl)
11.7 窗口和菜单
Java最新实用教程
2009年 7月 27日星期一 45
11.7.3 窗口事件( WindowEvent)
11.7 窗口和菜单
WINDOW_ACTIVATED,窗口被激活。
WINDOW_DEACTIVATED,窗口成非活动
WINDOW_OPENED,窗口被打开 。
WINDOW_CLOSED,窗口被关闭 。
WINDOW_CLOSING,窗口正在被关闭。
WINDOW_ICONIFIED,窗口最小化到任务栏成图标。
Java最新实用教程
2009年 7月 27日星期一 46
11.7.4 窗口剪裁类( WindowAdapter)
11.7 窗口和菜单实现了所有 WindowEvent事件监听的类。
public void windowOpened(WindowEvente)窗口打开
public void windowClosing(WindowEvente)关闭窗口
public void windowClosed(WindowEvente) 窗口已关
public void windowIconified(WindowEvente)最小化
public void windowLostFocus(WindowEvente)
Java最新实用教程
2009年 7月 27日星期一 47
11.7 窗口和菜单
Java最新实用教程
2009年 7月 27日星期一 48
11.8.1 对话框类 ( JDialog)
public Dialog(Frameowner)
public Dialog(Frameowner,Stringtitle)
public Dialog(Frameowner,booleanmodal)
public String getTitle()
public void setModal(booleanb)
public boolean isResizable()
对话框是有边框、有标题,不能作为程序的顶层容器。
11.8 对话框
Java最新实用教程
2009年 7月 27日星期一 49
11.8.2 几种常用对话框
javax.swing.JOptionPane
public static int showConfirmDialog(
ComponentparentComponent,
Objectmessage)
public static int showConfirmDialog(
ComponentparentComponent,
Objectmessage,Stringtitle,
intoptionType,intmessageType)
11.8 对话框
Java最新实用教程
2009年 7月 27日星期一 50
11.8.2 几种常用对话框
11.8 对话框
Java最新实用教程
2009年 7月 27日星期一 51
11.9.1 图像处理
Applet中读取图像
Image img = getImage(getCodeBase(),”test.gif”);
Java可以很轻松地完成多媒体程序设计。
11.9 多媒体编程基础应用程序中读取图像
Image img =
Toolkig.getDefaultToolkit().getImage(“test.gif”);
显示图像 (在 paint()方法中完成 )
g.drawImage(img,10,20,400,300,this);
Java最新实用教程
2009年 7月 27日星期一 52
11.9.1 图像处理
11.9 多媒体编程基础
Java最新实用教程
2009年 7月 27日星期一 53
11.9.2 数字音频
public AudioClip getAudioClip(URLurl)
public AudioClip getAudioClip(
URLurl,String)
在 AudioClip对象中,方法 play()可以播放,stop()可以停止播放,loop()可以循环播放 。
11.9 多媒体编程基础
Java最新实用教程
2009年 7月 27日星期一 54
11.10 本章小结第 1节介绍了 Applet基础;第 2节介绍了 AWT和 Swing的基础;第 3节介绍了 java.awt和 javax.swing包,并给出了事件的概念以及各种事件的基础含义;第 4节介绍了面板和画板的基本操作;第 5节详细介绍了各种常见的布局管理器;第 6节对标准组件进行了简单介绍;第 7节说明了窗口和菜单的使用;第 8节讲到了对话框的使用,以及对话框的种类;第 9节简单介绍了多媒体编程基础,主要介绍了图像读取显示以及音频文件的操作等 。