JAVA-第11章-图形用户界面编程基础ppt课件.ppt
《JAVA-第11章-图形用户界面编程基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《JAVA-第11章-图形用户界面编程基础ppt课件.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )11.1 11.1 图形用户界面核心概念图形用户界面核心概念11.2 11.2 容器与布局管理容器与布局管理11.3 11.3 常用常用GUIGUI标准组件标准组件11.4 11.4 鼠标和键盘事件鼠标和键盘事件J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )11.1 11.1 图形用户界面核心概念图形用户界面核心概念 容器容器-可以容纳可以容纳GUIGUI部件(按某种布局)部件(按某种布局) -窗体窗体 、面板、面板 部件
2、部件-部署在容器中,实现某种交互。部署在容器中,实现某种交互。 - -文本框、按纽、标签等文本框、按纽、标签等GUI部件部件 J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 第第1 1步步 创建窗体创建窗体 方法方法1: Frame f = new Frame(标题标题 ) 方法方法2: class MyFrame extends Frame . Frame f = new MyFrame(标题标题 )让窗体可见让窗体可见p f.setSize(200,300);p f.setVisible(true);J a v aJ a v
3、a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 第第2 2步步 创建创建GUIGUI部件部件 创建按钮、标签创建按钮、标签Button b=new Button(Button b=new Button(“计数计数”););Label dis=new Label(Label dis=new Label(“0 0”););0J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 第第3 3步步 将部件加入窗体容器将部件加入窗体容器 布局设置布局设置 setLayout(new FlowLayout()se
4、tLayout(new FlowLayout() 加入部件加入部件 add( add(b);); add(add(dis););0J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 第第4 4步步 处理事件处理事件事件处理事件处理 -委托委托事件处理模型事件处理模型-事件源将事件委托给事件监听者处理事件源将事件委托给事件监听者处理事件监听者事件监听者-负责处理事件负责处理事件 - -符合相应接口要求符合相应接口要求事件源事件源-发生事件发生事件单击单击J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( (
5、第第 2 2 版版 ) )事件委托处理事件委托处理图图button.addActionListener( ActionListener a ); 12单击单击3J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )(1)事件源对象的容器类作为监听者)事件源对象的容器类作为监听者 addActionListener(this); (2)用内嵌类实现)用内嵌类实现 addActionListener( new Process() ); 谁作为监听者合适谁作为监听者合适? -要其要其actionPerformed方法中方法中方便访问方便访问事件
6、处理相关对象事件处理相关对象 (3)用匿名内嵌类实现)用匿名内嵌类实现 addActionListener( new ActionListener() . );J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )表11-1 AWT事件接口及处理方法描述信息描述信息接口名称接口名称方法(事件)方法(事件)点击按钮、点击菜点击按钮、点击菜单项、文本框按回单项、文本框按回车等动作车等动作ActionListeneractionPerformed(ActionEvent)选择了可选项的项选择了可选项的项目目ItemListeneritemSta
7、teChanged(ItemEvent)文本部件内容改变文本部件内容改变TextListenertextValueChanged(TextEvent)移动了滚动条等部移动了滚动条等部件件AdjustmentListeneradjustmentVlaueChanged(AdjustmentEvent)鼠标移动鼠标移动MouseMotionListenermouseDragged(MouseEvent)mouseMoved(MouseEvent)鼠标点击等鼠标点击等MouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent)mouse
8、Entered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )键盘输入键盘输入KeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)部件收到或失部件收到或失去焦点去焦点FocusListenerfocusGained(FocusEvent)focusLost(FocusEvent)部件移动、缩部件移动、缩放、显示放、显示/隐隐藏等藏
9、等ComponentListenercomponentMoved(ComponentEvent)componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)窗口事件窗口事件WindowListenerwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified (WindowEvent)windowClosed(WindowEvent)wi
10、ndowActivated(WindowEvent)windowDeactivated(WindowEvent)容器增加容器增加/删除删除部件部件ContainerListenercomponentAdded(ContainerEvent)componentRemoved(ContainerEvent)J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 区分事件源区分事件源 编写一个窗体应用程序,在窗体中安排两个编写一个窗体应用程序,在窗体中安排两个文本框,一个标签,两个标记为文本框,一个标签,两个标记为“+ +”和和“* *”的按的
11、按钮,从两个文本框输入两个数,钮,从两个文本框输入两个数,点击点击“+ +”按钮按钮将将文本框中两个数进行加法运算,结果显示在标签文本框中两个数进行加法运算,结果显示在标签中中; ;点击点击“* *”按钮按钮将文本框中两个数进行减法运算,将文本框中两个数进行减法运算,结果显示在标签中。结果显示在标签中。 J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 在动作事件处理代码中区分事件源在动作事件处理代码中区分事件源 getSource() 用来获取事件源对象。用来获取事件源对象。 getActionCommand() 结果为字符串,用
12、来获取按钮事件对象的命令名结果为字符串,用来获取按钮事件对象的命令名 -ActionEvent对象提供方法对象提供方法J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 关键代码关键代码public void actionPerformed(ActionEvent e) int x1=Integer.parseInt(f1.getText(); int x2=Integer.parseInt(f2.getText(); if ( e.getActionCommand().equals(“+”) ) res.setText(+(x1+x
13、2); else res.setText(+(x1*x2); J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 或者或者public void actionPerformed(ActionEvent e) int x1=Integer.parseInt(f1.getText(); int x2=Integer.parseInt(f2.getText(); if ( e.getSource() = b1 ) res.setText(+(x1+x2); else res.setText(+(x1*x2); 假设,将假设,将b1定为实例变
14、量定为实例变量 b1=new Button(“+”);J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 关于事件适配器类关于事件适配器类 JavaJava中为那些具有多个方法的监听者接口提供中为那些具有多个方法的监听者接口提供了事件适配器类,这个类通常命名为了事件适配器类,这个类通常命名为XxxAdapterXxxAdapter,在该类中以空方法体实现了相应,在该类中以空方法体实现了相应接口的所有方法接口的所有方法程序员设计可通过程序员设计可通过继承适配器类继承适配器类来编写监听者来编写监听者类,在类中只需给出关心的方法。类,在类中
15、只需给出关心的方法。 J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )例例11-2 11-2 处理窗体的关闭处理窗体的关闭 class MyFrame extends Frame implements ActionListener public MyFrame() super(“测试窗体关闭); Button btn=new Button(关闭); setLayout(new FlowLayout(); add(btn); btn.addActionListener(this); addWindowListener(new clos
16、eWin(); setSize(300,200); setVisible(true); J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) public void actionPerformed(ActionEvent e) if ( e.getActionCommand().equals(关闭关闭) ) dispose(); class closeWin extends WindowAdapter public void windowClosing(WindowEvent e) Window w=e.getWindow(); w.d
17、ispose(); 只要写自己关心的方法只要写自己关心的方法J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 项目项目1. 1. 编写一个窗体应用,窗体中安排编写一个窗体应用,窗体中安排1 1个按钮,点击个按钮,点击按钮让按钮的背景颜色随机变化。按钮让按钮的背景颜色随机变化。2.2.设有一批英文单词存放在一个数组中,编制一个设有一批英文单词存放在一个数组中,编制一个图形界面程序浏览单词。在界面中安排一个标签图形界面程序浏览单词。在界面中安排一个标签显示单词,另有显示单词,另有“上一个上一个”、“下一个下一个”两个按两个按钮实现单词的
18、前后翻动。钮实现单词的前后翻动。 J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) FlowLayout(流式布局流式布局) BorderLayout(边缘或方位布局边缘或方位布局) GridLayout(网格布局网格布局) CardLayout(卡片式布局卡片式布局) GridBagLayout(网格块布局网格块布局) 11.2 容器与布局管理容器与布局管理J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )11.2.1 FlowLayout(11.2.1 FlowLayo
19、ut(流式布局流式布局)-是是PanelPanel的默认布局的默认布局 从上到下、左到右排放,放不下再换至下一行从上到下、左到右排放,放不下再换至下一行 -不会改变控件的大小不会改变控件的大小。 按照参数要求安排部件间的纵横间隔纵横间隔和对齐方式对齐方式 public FlowLayout() 居中对齐方式,组件纵横间隔5个像素。 public FlowLayout(int align, int hgap, int vgap) 3个参数分别指定对齐方式、纵、横间距 public FlowLayout(int align) 参数规定对齐方式对齐方式,组件纵横间距纵横间距默认5个像素。J a v
20、aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )【例例11-311-3】 大小不断递增的大小不断递增的9 9个按钮放入窗体中个按钮放入窗体中public FlowLayoutExample( ) setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10); String spaces = “”; / 用来使按钮的大小变化用来使按钮的大小变化 for (int i = 1; i = 9; i+) add(new Button(“B #” + i + spaces);spaces += “ ”; 放大窗体后放
21、大窗体后J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )11.2.2 BorderLayout(11.2.2 BorderLayout(边缘或方位布局边缘或方位布局)-是是FrameFrame的默认布局的默认布局 将容器内部空间分为东(将容器内部空间分为东(East)、南()、南(South)、西)、西(West)、北()、北(North)、中()、中(Center)五个区域)五个区域 J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) 控件的大小随容器大小改变。控件的大小
22、随容器大小改变。 按照参数要求安排部件间的纵横间隔纵横间隔和对齐方式对齐方式 public BorderLayout()() 各组件之间的纵横间距为各组件之间的纵横间距为0 public BorderLayout(int hgap, int vgap) 2个参数分别指定纵、横间距个参数分别指定纵、横间距 加入组件加入组件 add(方位名字符串方位名字符串, 组件组件) J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) ) String borders = North, East, South, West, Center; setLayo
23、ut(new BorderLayout(10, 10); for(int i = 0; i 5; i+) add(bordersi, new Button(bordersi); J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )【例例 11-411-4】 实现一个简单的图像浏览窗体,部署实现一个简单的图像浏览窗体,部署“上一上一张张”、“下一张下一张”两个按钮,单击按钮可前后翻阅图片。两个按钮,单击按钮可前后翻阅图片。import java.awt.*; import java.awt.event.*;public class Sho
24、wAnimator extends Frame implements ActionListener Image m_Images; /保存图片序列的保存图片序列的Image数组数组 int totalImages = 4; /图片序列中的图片总数为图片序列中的图片总数为18 int pos = 0; /当前显示图片的序号当前显示图片的序号 Button b1,b2; public ShowAnimator() m_Images = new ImagetotalImages; Toolkit t = getToolkit(); for(int i=0; i0) pos = - pos; /上一张
25、上一张 else pos = + pos % totalImages; /下一张下一张 repaint( ); public static void main(String a) Frame m= new ShowAnimator(); m.setSize(200,200); m.setVisible(true); J a v aJ a v a 语 言 程 序 设 计语 言 程 序 设 计 ( ( 第第 2 2 版版 ) )11.2.3 GridLayout11.2.3 GridLayout布局布局 p 把容器的空间分为若干行乘若干列的网格区域p 组件按从左向右,从上到下的次序被加到各单元格中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 11 图形 用户界面 编程 基础 ppt 课件
限制150内