Java语言程序设计(第2版)丁振凡第11章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java语言程序设计(第2版)
♣ 第2步 创建GUI部件
…0…
创建按钮、标签 Button b=new Button( “计数”); Label dis=new Label( “…0…”);
Java语言程序设计(第2版)
♣ 第3步 将部件加入窗体容器
布局设置 setLayout(new FlowLayout()) 加入部件 add(b); add(dis);
Java语言程序设计(第2版)
♣ 第1步 创建窗体
方法1: Frame f = new Frame("标题" ) 方法2: class MyFrame extends Frame ….
Frame f = new MyFrame("标题" )
让窗体可见
f.setSize(200,300); f.setVisible(true);
Java语言程序设计(第2版)
第11章 图形用户界面编程基础 11.1 11.2 11.3 11.4 图形用户界面核心概念 容器与布局管理 常用GUI标准组件 鼠标和键盘事件
Java语言程序设计(第2版)
11.1 图形用户界面核心概念
GUI部件
• 容器---可以容纳GUI部件(按某种布局) ----窗体 、面板 • 部件---部署在容器中,实现某种交互。 ----文本框、按纽、标签等
…0…
Java语言程序设计(第2版)
♣ 第4步 处理事件
单击
事件源----发生事件 事件处理 ------委托事件处理模型
----委托给事件监听者
事件监听者---处理事件 ----符合相应接口要求
Java语言程序设计(第2版)
事件委托处理—图
button.addActionListener( ActionListener a );
Java语言程序设计(第2版)
键盘输入
KeyListener
keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent)
FocusListener focusGained(FocusEvent) 部件收到或失 focusLost(FocusEvent) 去焦点 部件移动、缩 ComponentListener componentMoved(ComponentEvent) componentHidden(ComponentEvent) 放、显示/隐 componentResized(ComponentEvent) 藏等 componentShown(ComponentEvent) WindowListener windowClosing(WindowEvent) 窗口事件 windowOpened(WindowEvent) wiLeabharlann BaidudowIconified(WindowEvent) windowDeiconified (WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) componentAdded(ContainerEvent) 容器增加/删除 ContainerListener componentRemoved(ContainerEvent) 部件
Java语言程序设计(第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.dispose();
例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 closeWin()); setSize(300,200); setVisible(true); }
---是Panel的默认布局 • 从上到下、左到右排放,放不下再换至下一行 -----不会改变控件的大小。
• 按照参数要求安排部件间的纵横间隔和对齐方式 • public FlowLayout() 居中对齐方式,组件纵横间隔5个像素。 • public FlowLayout(int align, int hgap, int vgap) 3个参数分别指定对齐方式、纵、横间距 • public FlowLayout(int align) 参数规定对齐方式,组件纵横间距默认5个像素。
Java语言程序设计(第2版)
♣ 关于事件适配器类
• Java中为那些具有多个方法的监听者接口提供了 事件适配器类,这个类通常命名为XxxAdapter, 在该类中以空方法体实现了相应接口的所有方法 • 程序员设计可通过继承适配器类来编写监听者类, 在类中只需给出关心的方法。
Java语言程序设计(第2版)
单击
2 1
3
Java语言程序设计(第2版)
♣ 谁作为监听者合适?
---要其actionPerformed中方便访问事件处理相关对象
(1)事件源对象的容器类作为监听者
addActionListener(this);
(2)用内嵌类实现
addActionListener( new Process() );
Java语言程序设计(第2版)
♥ 或者
public void actionPerformed(ActionEvent e) { int x1=Integer.parseInt(f1.getText()); int x2=Integer.parseInt(f2.getText()); if ( e.getSource() == b1 ) 假设,将b1定为实例变量 res.setText(""+(x1+x2)); b1=new Button(“+”); else res.setText(""+(x1*x2)); }
Java语言程序设计(第2版)
【例 11-4】 实现一个简单的图像浏览器,部署“上一 张”、“下一张”两个按钮,单击按钮可前后翻阅图片。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class ShowAnimator extends Applet implements ActionListener{ Image[ ] m_Images; //保存图片序列的Image数组 int totalImages = 18; //图片序列中的图片总数为18 int pos = 0; //当前显示图片的序号 Button b1,b2; public void init( ){ m_Images = new Image[totalImages]; for(int i=0; i<totalImages; i++) m_Images[i] = getImage(getDocumentBase(), "images\\img00" + (i+1)+".gif");
}
}
只要写自己关心的方法
Java语言程序设计(第2版)
♣ 项目
1. 编写一个窗体应用,窗体中安排1个按钮,点击 按钮让按钮的背景颜色随机变化。 2.设有一批英文单词存放在一个数组中,编制一个图 形界面程序浏览单词。在界面中安排一个标签显示 单词,另有“上一个”、“下一个”两个按钮实现 单词的前后翻动。
(3)用匿名内嵌类实现
addActionListener( new ActionListener() {…..} );
Java语言程序设计(第2版)
表11-1 AWT事件接口及处理方法
描述信息 点击按钮、点击菜 单项、文本框按回 车等动作 选择了可选项的项 目 文本部件内容改变 接口名称 ActionListener 方法(事件) actionPerformed(ActionEvent)
放大窗体后
Java语言程序设计(第2版)
11.2.2 BorderLayout(边缘或方位布局)
---是Frame的默认布局 • 将容器内部空间分为东(East)、南(South)、西 (West)、北(North)、中(Center)五个区域
Java语言程序设计(第2版)
控件的大小随容器大小改变。
• 按照参数要求安排部件间的纵横间隔和对齐方式 • public BorderLayout() 各组件之间的纵横间距为0 • public BorderLayout(int hgap, int vgap) 2个参数分别指定纵、横间距 加入组件
add(方位名字符串, 组件)
Java语言程序设计(第2版)
♣ 在动作事件处理代码中区分事件源
---ActionEvent对象提供方法
getSource() 用来获取事件源对象。
getActionCommand()
结果为字符串,用来获取按钮事件对象的命令名
Java语言程序设计(第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+x2)); else res.setText(""+(x1*x2)); }
ItemListener
itemStateChanged(ItemEvent) textValueChanged(TextEvent) adjustmentVlaueChanged (AdjustmentEvent)
TextListener 移动了滚动条等部 AdjustmentListener 件
Java语言程序设计(第2版)
11.2 容器与布局管理 • • • • • FlowLayout(流式布局) BorderLayout(边缘或方位布局) GridLayout(网格布局) CardLayout(卡片式布局) GridBagLayout(网格块布局)
Java语言程序设计(第2版)
11.2.1 FlowLayout(流式布局)
Java语言程序设计(第2版)
♣ 区分事件源
编写一个窗体应用程序,在窗体中安排两个文 本框,一个标签,两个标记为“+”和“*”的按钮, 从两个文本框输入两个数,点击“+”按钮将文本框 中两个数进行加法运算,结果显示在标签中;点击 “*”按钮将文本框中两个数进行减法运算,结果显 示在标签中。
Java语言程序设计(第2版)
鼠标移动
鼠标点击等
MouseMotionListener
MouseListener
mouseDragged(MouseEvent) mouseMoved(MouseEvent)
mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent)
String[ ] borders = {"North", "East", "South", "West", "Center"}; setLayout(new BorderLayout(10, 10)); for(int i = 0; i < 5; i++) { add(borders[i], new Button(borders[i])); }
Java语言程序设计(第2版)
【例11-3】 大小不断递增的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 += “ ”; } }
相关文档
最新文档