JAVA-第11章-图形用户界面编程基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java语言程序设计(第2版)第11章图形用户界面编程基础11.1图形用户界面核心概念11.2容器与布局管理11.3常用GUI标准组件11.4鼠标和键盘事件Java语言程序设计(第2版)11.1图形用户界面核心概念•容器---可以容纳GUI部件(按某种布局)----窗体、面板•部件---部署在容器中,实现某种交互。----文本框、按纽、标签等GUI部件Java语言程序设计(第2版)♣第1步创建窗体方法1:Framef=newFrame(标题)方法2:classMyFrameextendsFrame….Framef=newMyFrame(标题)让窗体可见f.setSize(200,300);f.setVisible(true);Java语言程序设计(第2版)♣第2步创建GUI部件创建按钮、标签Buttonb=newButton(“计数”);Labeldis=newLabel(“…0…”);…0…Java语言程序设计(第2版)♣第3步将部件加入窗体容器布局设置setLayout(newFlowLayout())加入部件add(b);add(dis);…0…Java语言程序设计(第2版)♣第4步处理事件事件处理----委托事件处理模型----事件源将事件委托给事件监听者处理事件监听者---负责处理事件----符合相应接口要求事件源----发生事件单击Java语言程序设计(第2版)事件委托处理—图button.addActionListener(ActionListenera);12单击3Java语言程序设计(第2版)(1)事件源对象的容器类作为监听者addActionListener(this);(2)用内嵌类实现addActionListener(newProcess());♣谁作为监听者合适?---要其actionPerformed方法中方便访问事件处理相关对象(3)用匿名内嵌类实现addActionListener(newActionListener(){…..});Java语言程序设计(第2版)表11-1AWT事件接口及处理方法描述信息接口名称方法(事件)点击按钮、点击菜单项、文本框按回车等动作ActionListeneractionPerformed(ActionEvent)选择了可选项的项目ItemListeneritemStateChanged(ItemEvent)文本部件内容改变TextListenertextValueChanged(TextEvent)移动了滚动条等部件AdjustmentListeneradjustmentVlaueChanged(AdjustmentEvent)鼠标移动MouseMotionListenermouseDragged(MouseEvent)mouseMoved(MouseEvent)鼠标点击等MouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)Java语言程序设计(第2版)键盘输入KeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)部件收到或失去焦点FocusListenerfocusGained(FocusEvent)focusLost(FocusEvent)部件移动、缩放、显示/隐藏等ComponentListenercomponentMoved(ComponentEvent)componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)窗口事件WindowListenerwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)容器增加/删除部件ContainerListenercomponentAdded(ContainerEvent)componentRemoved(ContainerEvent)Java语言程序设计(第2版)♣区分事件源编写一个窗体应用程序,在窗体中安排两个文本框,一个标签,两个标记为“+”和“*”的按钮,从两个文本框输入两个数,点击“+”按钮将文本框中两个数进行加法运算,结果显示在标签中;点击“*”按钮将文本框中两个数进行减法运算,结果显示在标签中。Java语言程序设计(第2版)♣在动作事件处理代码中区分事件源getSource()用来获取事件源对象。getActionCommand()结果为字符串,用来获取按钮事件对象的命令名---ActionEvent对象提供方法Java语言程序设计(第2版)♥关键代码publicvoidactionPerformed(ActionEvente){intx1=Integer.parseInt(f1.getText());intx2=Integer.parseInt(f2.getText());if(e.getActionCommand().equals(“+”))res.setText(+(x1+x2));elseres.setText(+(x1*x2));}Java语言程序设计(第2版)♥或者publicvoidactionPerformed(ActionEvente){intx1=Integer.parseInt(f1.getText());intx2=Integer.parseInt(f2.getText());if(e.getSource()==b1)res.setText(+(x1+x2));elseres.setText(+(x1*x2));}假设,将b1定为实例变量b1=newButton(“+”);Java语言程序设计(第2版)♣关于事件适配器类Java中为那些具有多个方法的监听者接口提供了事件适配器类,这个类通常命名为XxxAdapter,在该类中以空方法体实现了相应接口的所有方法程序员设计可通过继承适配器类来编写监听者类,在类中只需给出关心的方法。Java语言程序设计(第2版)例11-2处理窗体的关闭classMyFrameextendsFrameimplementsActionListener{publicMyFrame(){super(“测试窗体关闭);Buttonbtn=newButton(关闭);setLayout(newFlowLayout());add(btn);btn.addActionListener(this);addWindowListener(newcloseWin());setSize(300,200);setVisible(true);}Java语言程序设计(第2版)publicvoidactionPerformed(ActionEvente){if(e.getActionCommand().equals(关闭)){dispose();}}}classcloseWinextendsWindowAdapter{publicvoidwindowClosing(WindowEvente){Windoww=e.getWindow();w.dispose();}}只要写自己关心的方法Java语言程序设计(第2版)♣项目1.编写一个窗体应用,窗体中安排1个按钮,点击按钮让按钮的背景颜色随机变化。2.设有一批英文单词存放在一个数组中,编制一个图形界面程序浏览单词。在界面中安排一个标签显示单词,另有“上一个”、“下一个”两个按钮实现单词的前后翻动。Java语言程序设计(第2版)•FlowLayout(流式布局)•BorderLayout(边缘或方位布局)•GridLayout(网格布局)•CardLayout(卡片式布局)•GridBagLayout(网格块布局)11.2容器与布局管理Java语言程序设计(第2版)11.2.1FlowLayout(流式布局)---是Panel的默认布局•从上到下、左到右排放,放不下再换至下一行-----不会改变控件的大小。•按照参数要求安排部件间的纵横间隔和对齐方式•publicFlowLayout()居中对齐方式,组件纵横间隔5个像素。•publicFlowLayout(intalign,inthgap,intvgap)3个参数分别指定对齐方式、纵、横间距•publicFlowLayout(intalign)参数规定对齐方式,组件纵横间距默认5个像素。Java语言程序设计(第2版)【例11-3】大小不断递增的9个按钮放入窗体中publicFlowLayoutExample(){setLayout(newFlowLayout(FlowLayout.LEFT,10,10));Stringspaces=“”;//用来使按钮的大小变化for(inti=1;i=9;i++){add(newButton(“B#”+i+spaces));spaces+=“”;}}放大窗体后Java语言程序设计(第2版)11.2.2BorderLayout(边缘或方位布局)---是Frame的默认布局•将容器内部空间分为东(East)、南(South)、西(West)、北(North)、中(Center)五个区域Java语言程序设计(第2版)控件的大小随容器大小改变。•按照参数要求安排部件间的纵横间隔和对齐方式•publicBorderLayout()各组件之间的纵横间距为0•publicBorderLayout(inthgap,intvgap)2个参数分别指定纵、横间距加入组件add(方位名字符串,组件)Java语言程序设计(第2版)String[]borders={North,East,South,West,Center};setLayout(newBorderLayout(10,10));for(inti=0;i5;i++){add(borders[i],newButton(borders[i]));}Java语言程序设计(第2版)【例11-4】实现一个简单的图像浏览窗体,部署“上一张”、“下一张”两个按钮,单击按钮可前后翻阅图片。importjava.awt.*;importjava.awt.event.*;publicclassShowAnimatorextendsFrameimplementsActionListener{Image[]m_Images;//保存图片序列的Image数组inttotalImages=4;//图片序列中的图片总数为18intpos=0;//当前显示图片的序号Buttonb1,b2;publicShowAnimator(){m_Images=newImage[totalImages];Toolkitt=getToolkit();for(inti=0;itotalImages;i++)m_Images[i]=t.getImage(images\\image+i+.gif);用Tookit对象的getImage方法获取图像图像路径相对Java应用程序位置Java语言程序设计(第2版)Buttonb1=newButton(上一张);Buttonb2=newButton(下一张);setLayout(newBorderLayout());Paneloperate=newPanel();operate.setLayout(newFlowLayout(Flow

1 / 62
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功