Microsoft Word - 正文.doc

Size: px
Start display at page:

Download "Microsoft Word - 正文.doc"

Transcription

1 单元七 Java GUI 应用程序开发 1.AWT 及其图形界面组件 2.AWT 布局管理器 3.AWT 事件处理机制 案例 7-1 登录窗口 登录窗口是很多应用系统中不可缺少的组成部分 通过验证用户输入的用户名和密码, 决定是否允许用户进入系统, 在一定程度上保证系统的安全 本案例设计一个登录窗口, 运行 界面如图 7-1 所示 图 7-1 案例 7-1 登录窗口 众所周知, 拥有图形用户界面的计算机应用程序生动 形象, 更利于用户快速地掌握和使用 一些形象的图形甚至不用培训用户就能掌握其功能 那么, 如何使用编程工具开发一个图形用户界面的应用程序呢? 通过本单元对 Java 语言图形用户界面 (GUI,Graphics User Interface) 的学习, 读者能较好地安排用户操作界面, 使用户可以和程序之间方便地进行交互 读者还会学习 Java 的抽象窗口工具集 (AWT,Abstract Window Toolkit) 中包含的许多支持 GUI 的设计

2 7 Java 程序设计案例教程 1.AWT 简介 Java 语言提供了两个处理图形用户界面的类库 :java.awt 包和 javax.swing 包 本单元重点学习 AWT 包,Swing 包是在 AWT 包的基础上创建起来的程序包, 所以要了解 Swing 包, 必须先学好 AWT 包 AWT 是抽象窗口工具集 Abstract Window Toolkit 的英文缩写 AWT 包中提供了大量进行 GUI 设计所使用的类和接口, 包括绘制图形 设置字体和颜色 设置组件大小和位置 处理事件等内容 图 7-2 显示了 AWT 包中主要类及组件类的继承关系 Button Panel Applet Component Container Canvas Choice Checkbox Scrollpane Window Frame Dialog Label FileDialog List TextComponent Scrollbar TextField TextArea 图 7-2 AWT 包中主要类及组件类的继承关系从图 7-2 中我们可以看出,Component 类是 AWT 所有组件的最终抽象父类, 它的子类分为两大部分 : 容器类与非容器类 首先, 学习一下 Component 类的主要, 如表 7-1 所示 表 7-1 组件类 Component 的常用 public void setvisible(boolean b) public void setbounds(int x,int y,int w,int h) public void setbackground(color c) public void setsize(int width,int height) public void setfont(font f) public Color setforeground(color c) public void setlocation(int x,int y) public String getname() 设置组件是否显示设置组件的大小和显示位置设置组件的背景颜色为 c 设置组件的宽度和高度设置对象的字体样式为 f 设置对象的前景色为 c 设置组件位置的左上角坐标 (x,y) 返回对象的名称 接下来, 我们认识一下容器类 (Container) 本节开始程序中的 Frame 就是一个容器 Frame 类的和常用见表 7-2 那么, 容器到底是什么? 所谓容器就是可以包含其他组件的组件 容器类的层次关系请参见图

3 单元七 Java GUI 应用程序开发 7 表 7-2 Frame 类的和常用 public Frame() public Frame(String title) public void setmenubar(menubar mb) public void settitle(string title) public String gettitle() public boolean isresizable() public void remove(menucomponent mc) 创建一个没有标题的窗口框架创建一个标题为 title 的窗口框架设置窗口的菜单条设置或修改窗口的标题返回窗口的标题判断窗口是否可以调整大小从窗口中删除给定的菜单项 若想向容器中添加组件, 请使用 Container 类的 add() 反之, 若想从中删除某个组件, 则使用 remove() 容器类的主要如表 7-3 所示 表 7-3 容器类 Container 的常用 public Component add(component comp) public void setlayout(layoutmanager mgr) public void remove(component comp) public void paint(graphics g) public void paintcomponent(graphics g) 在容器中添加组件设置组件容器的布局删除容器组件里指定的组件重绘容器组件重绘容器组件里的所有组件 2. 组件 (Components) 有了窗口之后, 还要创建其他组件, 然后将其添加到窗口中 本节将介绍 AWT 包中提供的基本组件, 对于这些组件请参照图 7-2 所示的 AWT 类的层级图 (1) 标签 (Label) 正如贴在饮料瓶上的商标一样, 标签 Label 具有显示某段文本的功能 它可用 java.awt 类库里的 Label 类创建 表 7-4 列出了 Label 类的和常用 表 7-4 Label 类的和常用 public Label() public Label(String text) public Label(String text,int align) public int getalignment() public void setalignment(int align) public String gettext() public void settext(string text) 创建一个没有文字的标签 创建标签, 以 text 为标签上的文字 创建标签, 以 text 为标签上的文字, 并以 align 的方式对齐,align 的值可为 Label.LEFT Label.RIGHT Label.CENTER, 分别表示靠左 右和居中对齐 返回标签上文字的对齐方式 设置标签上文字的对齐方式 返回标签上显示的文字 设置标签上的文字为 text 111

4 7 Java 程序设计案例教程 (2) 按钮 (Button) 按钮用来响应用户的点击动作 当用户点击按钮的时候, 与按钮相联系的程序将被执行, 从而完成指定的功能 java.awt 类库提供了 Button 类来处理按钮控件的相关操作 表 7-5 给出了 Button 类的和常用 表 7-5 Button 类的和常用 public Button() public Button(String label) public void setlabel(string label) public String getlabel() 创建一个没有标签的按钮创建一个以 label 为标签的按钮设置按钮上的标签为 label 返回按钮上的标签 (3) 单行文本框 (TextField) 像输入密码和用户名时使用的输入框一样, 用户可以向单行文本框中输入字符或修改其内容 TextField 类和 TextArea 类是 TextComponent 类的子类 表 7-6 列出了 TextComponent 类的常用 表 7-7 列出了 TextField 类的和常用 表 7-6 TextComponent 类的常用 public void seteditable(boolean b) public void select(int selstart,int selend) public void selectall() public String getselecttext() Public String gettext() 设置文本组件是否可编辑选择 selstart 与 selend 之间的文本选择组件里的所有文本返回被选中的文本返回组件里的文本 表 7-7 TextField 类的和常用 public TextField() public TextField(String text) public TextField(int columns) public TextField(String text, int columns) public void setechochar(char c) public void settext(string text) public void setcolumns(int columns) public int getcolumns() 创建文本框创建文本框, 并以 text 为默认文本创建文本框, 并设置文本框的宽度可容纳 columns 个字符创建文本框, 并以 text 为默认文本, 设置文本框的宽度可容纳 columns 个字符设置文本框的回显字符设置文本框中的文本为 text 设置文本框的宽度为 columns 个字符返回文本框默认的宽度, 以字符为单位 112

5 单元七 Java GUI 应用程序开发 7 (4) 多行文本框 (TextArea) 顾名思义, 多行文本框就是可以输入多行文本的文本框, 也称为文本区 ( 如图 7-3 所示 ) 用户可以对其中的字符进行修改 表 7-8 列出了 TextArea 类的和常用 表 7-9 给出了 TextArea 类的数据成员 图 7-3 多行文本框 表 7-8 TextArea 类的和常用 public TextArea() public TextArea(String text) public TextArea(int cols,int columns) public TextArea(String text, int cols,int columns) public TextArea(String text, int cols,int columns, int scrollbars) public void append(string str) public void insert(string str,int pos) public void setcolumns(string str,int start,int end) 创建一个 TextArea 对象 创建一个 TextArea 对象,text 为初始字符 创建一个 cols 行 columns 列的 TextArea 对象 创建一个 TextArea 对象,text 为初始字符, 同时设置行数和列数 创建 TextArea 对象,text 为初始字符, 设置行数和列数, 同时加上滚动条的显示方式 ( 参见表 7-9) 将字符串 str 加在文本末尾 将字符串 str 插入 pos 位置 将 start 到 end 之间的字符串替换为 str 表 7-9 TextArea 类的数据成员 数据成员 代表数值 public SCROLLBARS_BOTH 具有水平与垂直滚动条 0 public SCROLLBARS_VERTICAL_ONLY 只有垂直滚动条 1 public SCROLLBARS_HORIZONTAL_ONLY 只有水平滚动条 2 public SCROLLBARS_NONE 没有滚动条 3 (5) 复选框 (Checkbox) 复选框是让用户选取项目的一种组件 当用户点击复选框时, 若 Checkbox 的状态为 true ( 选中 ), 则其状态变为 false( 未选中 ); 若 Checkbox 的状态为 false, 则其状态变为 true 复选框分为复选 ( 如图 7-4 所示 ) 和单选 ( 如图 7-5 所示 ) 两种 表 7-10 列出了 Checkbox 类的和常用 113

6 7 Java 程序设计案例教程 图 7-4 复选框图 7-5 单选框 表 7-10 Checkbox 类的和常用 public Checkbox() public Checkbox(String label) public Checkbox(String label,boolean state) public Checkbox(String label,boolean state, CheckboxGroup grp) Public Checkbox(String label, CheckboxGroup gr, boolean state p) public void setcheckboxgroup(checkboxgroup grp) public void setstate(boolean state) 创建一个没有文字显示的复选框创建一个以 label 为标签的复选框创建一个以 label 为标签的复选框, 并设置复选框的初始状态为 state 创建一个以 label 为标签的复选框, 设置复选框的初始状态为 state, 并将其加入到复选框组 grp 中同上, 只是参数位置不同设置复选框属于 grp 组设置复选框是否被选中 创建单选框需要 Checkbox 类与 CheckboxGroup 类一起使用 CheckboxGroup 类将 Checkbox 分成不同的组 用户在同一个 Checkbox 组中只能选择一个 Checkbox (6) 列表框 (List) 和下拉列表框 (Choice) 列表框 (List) 以目录的形式显示多个选项, 用户可以从中选择一项或多项 我们把构成目录的元素称为列表项 (item) 表 7-11 列出了 List 类的和常用 表 7-11 List 类的 public List() public List(int rows) public List(int rows,boolean multiplemode) public void add(string item) public void add(string item,int index) public String getitem(int index) public String getselecteditem() 创建一个列表框, 默认行数为 4 行创建一个可以显示 rows 行的列表框创建一个可以显示 rows 行的列表框,multipleMode 为 true 表示多选, 为 false 表示单选将列表项 item 添加到列表框的末尾将列表项 item 添加到 index 位置 index 从 0 开始返回 index 位置的列表项名称返回被选中的列表项的名称 114

7 单元七 Java GUI 应用程序开发 7 下拉列表框 (Choice) 与列表框相似, 它也是一个有许多选项的选择组件, 如图 7-6 所示 但是, 它只会将用户选择的选项显示出来, 所以不会占据太大空间 表 7-12 列出了下拉列表 框类 Choice 的和常用 图 7-6 ( 下拉 ) 列表框 表 7-12 Choice 类的和常用 public Choice() 创建一个下拉列表框 public void add(string item) public void insert(string item,int index) public String getitem(int index) public String getselecteditem() 将列表项 item 添加到列表框的末尾将列表项 item 插入到 index 位置返回 index 位置的列表项名称返回被选中的列表项名称 1.import java.awt.*; 2.class AwtLabelButtonTextField{ 3. public static void main(string args[]){ 4. Frame frm=new Frame(" 登录窗口 "); // 创建窗口 frm 5. Label lab1=new Label("ID",Label.CENTER); // 创建标签 6. Label lab2=new Label(" 密码 ",Label.CENTER); 7. Button bun1=new Button(" 登录 "); // 创建按钮 8. Button bun2 =new Button(" 取消 "); 9. TextField tf1=new TextField(10); // 创建文本框 10. TextField tf2=new TextField(10); 11. frm.add(lab1); // 向窗口 frm 中添加标签 lab1 115

8 7 Java 程序设计案例教程 12. frm.add(lab2); 13. frm.add(bun1); // 向窗口 frm 中添加按钮 bun1 14. frm.add(bun2); 15. frm.add(tf1); // 向窗口 frm 中添加文本框 tf1 16. frm.add(tf2); 17. frm.setlayout(null); 18. lab1.setbounds(20,50,100,30); // 设置标签的位置和大小 19. lab2.setbounds(20,80,100,30); 20. tf1.setbounds(120,50,100,30); // 设置文本框的位置和大小 21. tf2.setbounds(120,80,100,30); 22. bun1.setbounds(20,110,100,30); // 设置按钮的位置和大小 23. bun2.setbounds(120,110,100,30); 24. frm.setbounds(350,200,300,150); // 设置窗口的位置和大小 25. frm.setvisible(true); // 设置窗口可见 26. } 27.} 本案例中使用 Frame 类创建了一个窗口, 并在此窗口中创建了两个标签 (Label) 两个按 钮 (Button) 和两个文本框 (TextField) 小常识 : 即便您按了 Frame 上的关闭按钮,Frame 也不会关闭 在 DOS 窗口中, 您可以 通过按组合键 Ctrl+C 来强制关闭该 Frame : 程序中的 Frame 类显然是 AWT 包中的类 setbounds() 和 setvisible() 是 Frame 类的或者其父类的 您认为我分析的对吗? 实际上, 只要我们掌握了 AWT 包 中的类, 就可以编写出图形用户界面程序 还等什么呢? 赶快进入 AWT 世界吧! 1. 创建如图 7-7 所示的标签 图 7-7 标签 2. 学习相关组件的属性和, 创建如图 7-8 所示的填写个人资料窗口 116

9 单元七 Java GUI 应用程序开发 7 图 7-8 填写个人资料窗口 案例 7-2 计算器界面 使用布局管理器实现计算器界面设计 如图 7-9 所示 图 7-9 计算器界面 在前面的学习中, 都是先使用 setlayout(null) 取消容器的默认布局管理器, 然后使用 setbounds() 设置组件的大小和位置 显然, 使用该合理有序地摆放组件非常麻烦 而学习了布局管理器之后, 这将是件非常轻松的事情 那么, 布局管理器有什么作用呢? 布局管理器能自动设置容器中组件的大小和位置, 当容器大小改变时, 它能自动调整其中组件的大小和位置 117

10 7 Java 程序设计案例教程 容器可以通过调用 setlayout( 布局管理器对象 ) 设置其布局管理器 向设置了布局管理的容器中添加组件都使用 add( 参数 ), 参数随布局管理器的不同而不同 下面介绍几种常用的布局管理器类 1.BorderLayout 类 BorderLayout 是一种简单的布局策略, 也称为边界式布局管理器 ( 如图 7-10 所示 ) BorderLayout 的布局策略是 : 1) 将容器空间分为北 (North) 南 (South) 西 (West) 东 (East) 中 (Center)5 个区域 2) 每个组件都可占据某个区域, 若没有指定区域, 默认为中间 (Center) 3) 若组件加入已被占用位置时, 将取代原先的组件 图 7-10 BorderLayout 布局管理器界面布局方式 BorderLayout 是容器 Frame 和对话框 Dialog 默认的布局管理器 表 7-13 列出了 BorderLayout 类的, 表 7-14 列出了表示组件摆放位置的数据成员 BorderLayout 类的常用请参阅相关读物 表 7-13 BorderLayout 类的 public BorderLayout() public BorderLayout(int hgap,int vgap) 创建 BorderLayout 布局管理器, 容器中的各组件之间没有间距创建 BorderLayout 布局管理器, 容器中的各组件之间水平间距为 hgap, 垂直间距为 vgap 表 7-14 BorderLayout 类中表示位置的数据成员 数据成员 代表字符串 BorderLayout.EAST 组件放在容器右边 "East" BorderLayout.WEST 组件放在容器左边 "West" BorderLayout.NORTH 组件放在容器上边 "North" BorderLayout.SOUTH 组件放在容器下边 "South" BorderLayout.CENTER 组件放在容器中间 "Center" 向某个区域中添加组件的如下 ( 以 EAST 为例 ):add( 组件对象,BorderLayout.EAST) 或 add( 组件对象,"East") 118

11 单元七 Java GUI 应用程序开发 7 提示 :Frame 默认的布局管理器就是 BorderLayout, 因此可以不设置其布局管理器 但是, 若使用其他的布局管理器则不能省略, 必须使用 setlayout() 设置布局管理器 2.FlowLayout 类 FlowLayout 称为流式布局管理器, 布局策略非常简单 ( 如图 7-11 图 7-12 所示 ) 它的布局策略是 : 1) 组件按照加入容器的顺序从左向右排列 2) 一行排满以后就自动地转到下一行继续从左到右排列 3) 每一行中的组件都居中排列 图 7-11 FlowLayout 布局 1 图 7-12 FlowLayout 布局 2 FlowLayout 是 Panel Applet 小程序默认的布局管理器 表 7-15 列出了 FlowLayout 类的, 表 7-16 列出了 FlowLayout 类的主要数据成员 表 7-15 FlowLayout 类的 public FlowLayout() public FlowLayout(int align) public FlowLayout(int align,int hgap,int vgap) 创建 FlowLayout 布局管理器, 容器中的组件居中对齐, 组件的水平和垂直间距默认为 5 个单位创建同上的 FlowLayout 布局管理器, 使用指定对齐方式 ( 参见表 7-16) 创建同上的 FlowLayout 布局管理器, 但组件间的水平间距为 hgap, 垂直间距为 vgap 表 7-16 FlowLayout 类中表示对齐方式的数据成员 数据成员 代表数值 FlowLayout.LEFT 每行组件靠左对齐 0 FlowLayout.CENTER 每行组件居中对齐 1 FlowLayout.RIGHT 每行组件靠右对齐 2 119

12 7 Java 程序设计案例教程 3.GridLayout 类网格式布局管理器 GridLayout( 如图 7-13 所示 ) 的布局策略是 : 1) 将窗口划分成 n 行 m 列的网格区域 2) 组件按照加入容器的顺序从左到右 从上到下添加到网格区域中 图 7-13 GridLayout 布局 表 7-17 列出了 GridLayout 类的 表 7-17 GridLayout 类的 public GridLayout() public GridLayout(int cows,int cols) public GridLayout(int cows,int cols, int hgap,int vgap) 创建 GridLayout 布局管理器, 使用默认值, 每行只有一个组件创建一个 cows 行 cols 列的 GridLayout 布局管理器创建一个 cows 行 cols 列的 GridLayout 布局管理器, 组件间的水平间距为 hgap, 垂直间距为 vgap 布局管理器除了上面介绍的 BorderLayout FlowLayout GridLayout 之外, 还有卡片式布 局管理器 CardLayout 和网袋布局管理器 GridBagLayout, 请参阅其他读物 1.import java.awt.*; 2.public class TestLayout extends Frame{ 3.static Panel pan=new Panel(); // 创建面板 pan 4.static Label lab=new Label("0.",Label.RIGHT); // 创建标签 lab 5.static Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bp,ba,bs,bm,bd,be; // 定义按钮 6.public static void main(string args[]){ 7. TestLayout frm=new TestLayout(); 8. b0=new Button("0");b1=new Button("1");b2=new Button("2"); 9. b3=new Button("3");b4=new Button("4");b5=new Button("5"); 10. b6=new Button("6");b7=new Button("7");b8=new Button("8"); 11. b9=new Button("9");bp=new Button(".");ba=new Button("+"); 12. bs=new Button("-");bm=new Button("*");bd=new Button("/"); 13. be=new Button("="); // 初始化各按钮 120

13 单元七 Java GUI 应用程序开发 frm.settitle(" 计算器界面 "); 15. frm.setlayout(null); // 取消 frm 布局管理器 16. frm.setsize(200,200); 17. frm.setresizable(false); 18. GridLayout grid=new GridLayout(4,4); 19. pan.setlayout(grid); 20. pan.setbounds(20,60,150,120); 21. lab.setbounds(20,35,150,20); 22. lab.setbackground(color.cyan); 23. pan.add(b7);pan.add(b8);pan.add(b9);pan.add(bd); 24. pan.add(b4);pan.add(b5);pan.add(b6);pan.add(bm); 25. pan.add(b1);pan.add(b2);pan.add(b3);pan.add(bs); 26. pan.add(b0);pan.add(bp);pan.add(be);pan.add(ba); // 向面板中添加按钮 27. frm.add(lab); 28. frm.add(pan); // 向窗口 frm 中添加面板 pan 29. frm.setvisible(true); // 设置窗口可见 30. } 31.} 计算器界面由一个标签和若干按钮组成, 按钮放在容器 (Panel 类 )pan 中,pan 采用 GridLayout 布局管理器, 若干按钮按照 4 行 4 列摆放在面板 pan 中 1. 编程实现图 7-9 图 7-10 和图 7-12 所示的布局 2. 使用 GridLayout 布局案例 7-1 的登录窗口 案例 7-3 学生信息管理系统界面 编程实现带有菜单的学生信息管理系统界面, 如图 7-14 所示 图 7-14 学生信息管理系统界面 121

14 7 Java 程序设计案例教程 之前一直使用的 Frame 就是一个容器, 容器类的层次关系请参见图 7-2 接下来我们学习三个容器类 1. 面板 (Panel) 面板类 Panel 是容器类 (Container) 的直接子类, 是一种没有标题的容器 它和 Frame 类有所区别 Panel 类具有如下特点 : 1)Panel 必须位于窗口或其他容器内 实例化后必须使用 add() 添加到窗口中 2) 默认的布局管理器是 FlowLayout, 可使用 setlayout() 改变其默认布局管理器 3)Panel 中可以添加其他组件, 例如按钮 标签等 Panel 一般用于布局和定位 Panel 类的见表 7-18 表 7-18 Panel 类的 public Panel() public Panel(LayoutManager layout) 创建一个面板 创建一个以 layout 为布局管理器的面板 提示 :Panel 类和 Frame 类一样也是容器 (Container) 类的子类, 所以可以使用 Component 类和 Container 类的 如图 7-15 所示在面板 (Panel) 中添加两个按钮 图 7-15 面板 2.( 文件 ) 对话框 (Dialog) 对话框类 (Dialog) 和框架类 (Frame) 都是 Window 的子类, 它们也具有相近的性质, 如都可以放置按钮 文本框等组件 但对话框右上角仅有一个关闭按钮, 没有最小化和最大化按钮 对话框主要用于显示信息或接收用户输入 我们必须给对话框指定所有者 (owner), 其所有者可以是 Frame 对象, 也可以是另一个 Dialog 对象 其所有者被最小化, 对话框也随之最小化 ; 所有者被关闭, 对话框也随之关闭 另外,Dialog 有模式和非模式两种方式, 模式 (modal) 对话框总在最前面, 若不处理完对话框, 则不能对其他窗口进行操作 ; 而非模式对话框在显示时, 可以操作其他对话框 122

15 单元七 Java GUI 应用程序开发 7 表 7-19 给出了 Dialog 类的和常用 表 7-20 给出了 FileDialog 类的 和常用 表 7-19 Dialog 类的和常用 public Dialog(Dialog owner) public Dialog(Dialog owner,string title) public Dialog(Dialog owner, String title,boolean modal) public Dialog(Frame owner) public Dialog(Frame owner,string title) public Dialog(Frame owner,boolean modal) public Dialog(Frame owner, String title,boolean modal) public void show() public void hide() public void dispose() public void setmodal(boolean b) public void setresizable(boolean resizable) 创建模式对话框, 其所有者为另一对话框创建模式对话框, 其所有者为另一对话框, 同时设置标题为 title 创建对话框, 其所有者为另一对话框, 标题为 title, 模式由 modal 指定创建模式对话框, 其所有者为一框架创建模式对话框, 其所有者为一框架, 同时设置标题为 title 创建对话框, 其所有者为一框架, 模式由 modal 指定创建对话框, 其所有者为一框架, 标题为 title, 模式由 modal 指定显示对话框隐藏对话框销毁对话框对象设置对话框模式设置对话框是否可以调整大小 表 7-20 FileDialog 类的和常用 public FileDialog(Frame parent) public FileDialog(Frame parent, String title) public FileDialog(Frame parent, String title,int mode) public void setdirectory(string dir) public void setfile(string file) public void setmode(int mode) public String getdirectory() public String getfile() public int getmode() 创建所有者为 parent 的文件对话框创建文件对话框, 所有者为 parent, 标题为 title 创建文件对话框, 所有者为 parent, 标题为 title, 模式为 mode 设置文件对话框默认打开的路径设置文件对话框默认打开的文件设置文件对话框模式返回文件对话框内所取的路径返回文件对话框内所取的文件名返回文件对话框的模式 :LOAD 或 SAVE 3. 菜单 (Menu) 组件读者对菜单并不陌生, 几乎所有应用软件都有菜单栏 Java 语言通过 MenuBar( 菜单条 ) Menu( 菜单 ) MenuItem( 菜单项 ) 三个类来实现菜单 一般情况下, 建立菜单分为三个步骤 : 123

16 7 Java 程序设计案例教程 1) 向窗口中添加菜单条 (MenuBar) 2) 在菜单条中添加菜单 (Menu) 3) 向菜单中添加内容 内容一般是菜单项 (MenuItem), 也可以是子菜单 (Menu) 或菜单选项 (CheckboxMenuItem) 接下来学习一下三个类的和常用, 分别见表 7-21 表 7-22 和表 7-23 表 7-21 MenuBar 类的和常用 public MenuBar() 创建一个菜单条 public Menu add(menu m) public void remove(int index) public void remove(menucomponent m) public Menu getmenu(int index) 向 MenuBar 中添加 Menu 对象 m 删除位置为 index 的 Menu 删除 MenuComponent 对象 m 返回位置为 index 的 Menu 表 7-22 Menu 类的和常用 public Menu() public Menu(String label) public MenuItem add(menuitem mi) public void insert(menuitem mi,int index) public void insert(string label,int index) public void removeall() 创建一个 Menu 创建一个标题为 label 的 Menu 向 Menu 中添加 MenuItem 对象 mi 在 index 位置插入 MenuItem 对象 mi 在 index 位置添加标题为 label 的 Menu 删除所有的 MenuItem 表 7-23 MenuItem 类的和常用 public MenuItem() public MenuItem(String label) public void setlabel(string label) public boolean isenabled() public void setenabled(boolean b) 创建一个 MenuItem 创建一个标题为 label 的 MenuItem 设置 MenuItem 的标题为 label 返回 MenuItem 是否可用设置 MenuItem 可用 注意 : 窗口中添加菜单条 (MenuBar) 使用 setmenubar(menubar mb), 而不是 add() 在菜单 (Menu) 中可以添加子菜单 (Menu), 请读者尝试 124

17 单元七 Java GUI 应用程序开发 7 1.import java.awt.*; 2.class TestAwtMenu{ 3.static Frame fr=new Frame(" 学生信息管理系统主界面 "); 4.static MenuBar mb=new MenuBar(); // 创建 1 个菜单条 mb // 创建 4 个菜单 5.static Menu menuser=new Menu(" 用户管理 "); 6.static Menu menuinfo=new Menu(" 信息管理 "); 7.static Menu menuquery=new Menu(" 查询 "); 8.static Menu menuhelp=new Menu(" 帮助 "); // 创建菜单 menuser 上的 4 个菜单项 9.static MenuItem miadd=new MenuItem(" 增加用户 "); 10.static MenuItem michange=new MenuItem(" 修改用户 "); 11.static MenuItem midelete=new MenuItem(" 删除用户 "); 12.static MenuItem miexit=new MenuItem(" 退出系统 "); // 创建菜单 menuinfo 上的 3 个菜单项 13.static MenuItem miaddinfo=new MenuItem(" 增加信息 "); 14.static MenuItem michangeinfo=new MenuItem(" 修改信息 "); 15.static MenuItem mideleteinfo=new MenuItem(" 删除信息 "); // 创建菜单 menuquery 上的 2 个菜单项 16.static MenuItem mibyno=new MenuItem(" 按学号 "); 17.static MenuItem mibyname=new MenuItem(" 按姓名 "); // 创建菜单 menuhelp 上的 1 个菜单项 18.static MenuItem mihelp=new MenuItem(" 帮助主题 "); 19.public static void main(string args[]){ 20. fr.setmenubar(mb); // 向窗口中添加菜单条 // 向菜单条上添加 4 个菜单 21. mb.add(menuser); 22. mb.add(menuinfo); 23. mb.add(menuquery); 24. mb.add(menuhelp); // 向菜单 menuser 上添加菜单项 25. menuser.add(miadd); 26. menuser.add(michange); 27. menuser.add(midelete); 28. menuser.add(miexit); // 向菜单 menuinfo 上添加菜单项 29. menuinfo.add(miaddinfo); 30. menuinfo.add(michangeinfo); 31. menuinfo.add(mideleteinfo); // 向菜单 menuquery 上添加菜单项 125

18 7 Java 程序设计案例教程 32. menuquery.add(mibyno); 33. menuquery.add(mibyname); 34. menuhelp.add(mihelp); // 向菜单 menuhelp 上添加菜单项 35. fr.setsize(300,300); 36. fr.setvisible(true); 37.} 38.} 程序中先定义了菜单条 mb( 第 4 行 ) 四个菜单( 第 5~8 行 ) 和 10 个菜单项 ( 第 9~18 行 ) 然后将菜单条添加到窗口, 将菜单添加到菜单条, 将菜单项添加到相应的菜单 ( 第 20~ 34 行 ) 1. 编程实现如图 7-15 所示窗口 2. 编程实现如图 7-16 所示窗口 菜单 菜单条 菜单项 图 7-16 菜单 案例 7-4 简单 绘图板 创建一个窗口, 并能根据鼠标的移动轨迹在窗口中绘制曲线, 如图 7-17 所示 图 7-17 案例

19 单元七 Java GUI 应用程序开发 7 1. 基本概念 1) 事件 (event): 用户使用鼠标或键盘和窗口中的组件进行交互时所发生的事情 2) 事件源 (event source): 就是能够产生事件的对象 3) 事件监听者 :Java 程序把对事件进行处理的放在一个类对象中, 这个类对象就是事件监听者 4) 事件处理接口 : 为了让监听者能对事件源发生的事件进行处理, 创建该监听者对象的类必须实现相应的接口, 即必须在类体中具体定义该接口中所有的体, 以供监听者自动调用被类实现的某个接口的 2. 委托事件模型事件源产生某种事件时,Java 程序不会直接对该事件进行处理, 它会将对该事件的处理工作委托给某个事件监听者 我们将这种事件处理模型称为委托事件模型 ( 如图 7-18 所示 ) 发生按键或鼠标点击等 事件 事件源 监听者 处理事件的 图 7-18 委托事件模型 在这种模型中, 事件的产生者 ( 事件源 ) 和事件的处理者 ( 监听者 ) 是分离的 事件的处理者是一些实现了某个 Listeners 接口的类 某个事件必须先注册事件的监听者, 即让实现了某个 Listeners 接口的类对象作为其处理者 当事件发生时, 该处理者必须有相应的来接受这种类型的事件并对它进行处理 Java 中处理各组件事件的一般步骤是 : 1) 定义实现事件监听接口的类 2) 创建事件监听者对象 3) 向事件源注册监听者对象 (addlistener( 监听者 )) 3.AWT 事件类 (Event) 与监听器接口 (Listener) Java 语言在 java.awt.event 包中定义了许多事件类用于处理各种用户操作所产生的事件, 它们都继承自 java.awt 包中的 AWTEvent 类 对于每一个事件类, 几乎都有相应的事件监听者 Java 语言的事件监听者绝大多数都是以接口形式给出的, 它们都是继承自 java.util.eventlistener 接口 事件类 对应的事件监听者接口与事件监听者接口所提供的这三者之间的关系见表

20 7 Java 程序设计案例教程 表 7-24 事件类 对应的事件监听者接口与事件监听者接口所提供的 事件类 / 监听者监听者接口所提供的事件处理者产生事件的用户操作 ComponentEvent ComponentListener ContainerEvent ComponentMoved (ComponentEvent e) ComponentResized(ComponentEvent e) ComponentHidden(ComponentEvent e) ComponentShown(ComponentEvent e) componentadded(containerevent e) 移动组件时改变组件大小时隐藏组件时显示组件时添加组件时 ContainerListener componentremoved(containerevent e) 删除组件时 ActionEvent ActionListener AdjustmentEvent AdjustmentListener ItemEvent ItemListener TextEvent TextListener MouseEvent MouseListener MouseEvent actionperformed(actionevent e) adjustmentvaluechanged(adjustmentevent e) itemstatechanged(itemevent e) textvaluechanged(textevent e) mouseclicked(mouseevent e) mouseentered(mouseevent e) mouseexited(mouseevent e) mousepressed(mouseevent e) mousereleased(mouseevent e) mousedragged(mouseevent e) 单击按钮 在文本行中单击 Enter 键 双击列表框选择菜单项时当组件的值被改变时选择复选框 单选框 单击列表框 选中带复选框的菜单项时在文本行 文本区中修改内容时单击鼠标时鼠标进入指定区域时鼠标离开指定区域时按下鼠标时松开鼠标时拖动鼠标时 MouseMotionListener mousemoved(mouseevent e) 移动鼠标时 KeyEvent KeyListener WindowEvent WindowListener FocusEvent keypressed(keyevent e) keyreleased(keyevent e) keytyped(keyevent e) windowactivated(windowevent e) windowclosing(windowevent e) windowclosed(windowevent e) windowdeactivated(windowevent e) windowdeiconified(windowevent e) windowiconified(windowevent e) windowopened(windowevent e) focusgained(focusevent e) 按下键盘上的按键时释放键盘上的按键时按键盘按键时激活窗口时关闭窗口时关闭窗口后窗口失去焦点时窗口从最小还原为正常时窗口最小化成图标时打开窗口时获得焦点时 FocusListener focuslost(focusevent e) 失去焦点时 128

21 单元七 Java GUI 应用程序开发 7 每当在事件源上发生一个操作时, 就会产生相应的事件对象 表 7-25 给了事件源与其产 生的事件对象的对应关系 表 7-25 AWT 组件可能产生事件的对应关系 事件源 产生事件的类类型 Button CheckBox Component MenuItem Scrollbar TextField TestArea Window ActionEvent ActionEvent ItemEvent ComponentEvent FocusEvent KeyEvent MouseEvent ActionEvent AdjustmentEvent ActionEvent ActionEvent WindowEvent 4. 动作事件 (ActionEvent) 及处理动作事件对应于组件的主要用途 点击按钮, 选择菜单项目, 或向单行文本框输入字符串并按 Enter 键时, 都会发生动作事件 在 Java 中动作事件由 ActionEvent 类表示 ActionEvent 所对应的监听者是 ActionListener 接口, 该接口所提供的事件处理是 actionperformed (ActionEvent e) ActionEvent 类的常用如表 7-26 所示 表 7-26 ActionEvent 类的常用 public String getactioncommand() Public int getmodifiers() 获取事件源的动作命令 (actioncommand) 字符串 返回事件发生时所按下的修饰符 EventObject 类是 ActionEvent 类的祖先类, 而 EventObject 类中的 getsource() 可以返回事件源 下面就以动作事件为例学习利用委托事件模型编写事件处理程序 例 : 窗口中摆放一个按钮, 当单击该按钮时, 窗口的背景变为红色 (1) 让 事件源 所在类的对象作为监听者 1.import java.awt.*; 2.import java.awt.event.*; 3.public class aevent extends Frame implements ActionListener{ 4. static aevent fr=new aevent(); 5. static Button button=new Button(" 红色 "); 6. public static void main(string args[]){ 7. button.addactionlistener(fr); 8. fr.setbounds(100,100,300,200); 9. fr.setbackground(color.pink); 10. fr.setlayout(new FlowLayout()); 11. fr.add(button); 129

22 7 Java 程序设计案例教程 12. fr.setvisible(true); 13. } 14. public void actionperformed(actionevent e){ 15. Button bu=(button)e.getsource(); 16. if(bu==button) fr.setbackground(color.red); 17. } 18.} 本代码选择由包含事件源 ( 按钮 ) 的类 (aevent) 的对象来担任监听者, 因此 aevent 类必须实现 (implements)actionlistener 接口 程序第 3 行正是这么做的 确定了监听者, 接下来就是向事件源 (button) 注册监听者 fr, 如程序第 7 行 最后, 在 aevent 类内定义 ActionListener 接口的 actionperformed(), 把事件处理程序编写在里面即可, 如程序第 14~17 行 (2) 定义内部类担任监听者 1.import java.awt.*; 2.import java.awt.event.*; 3.public class aevent2 extends Frame { 4. static aevent2 fr=new aevent2(); 5. static Button button=new Button(" 红色 "); 6. public static void main(string args[]){ 7. button.addactionlistener(new MyActionListener()); 8. fr.setbounds(100,100,300,200); 9. fr.setbackground(color.pink); 10. fr.setlayout(new FlowLayout()); 11. fr.add(button); 12. fr.setvisible(true); 13. } 14. static class MyActionListener implements ActionListener{ 15. public void actionperformed(actionevent e){ 16. Button bu=(button)e.getsource(); 17. if(bu==button) fr.setbackground(color.red); 18. } 19. } 20.} 程序第 14 行定义了 MyActionListener 类实现了 ActionListener 接口, 并定义了 actionperformed() 第 7 行将 MyActionListener 类的对象注册为 button 的监听者 运行结果如图 7-19 所示 图 7-19 按钮改变窗口背景 130

23 单元七 Java GUI 应用程序开发 7 5. 窗口事件 (WindowEvent) 及处理窗口事件类 WindowEvent 是指对窗口本身进行操作时所产生的事件 窗口事件类的监听者是 WindowListener 接口, 该接口中声明了 7 个用来处理不同事件的 WindowListener 接口的如表 7-27 所示 表 7-27 WindowListener 接口的 处理事件的 事件 public void windowopened(windowevent e) 窗口打开时 public void windowactivated(windowevent e) 窗口激活时 public void windowdeactivated(windowevent e) 窗口失活时, 即窗口失去焦点时 public void windowclosing(windowevent e) 企图关闭窗口时 ( 关闭前 ) public void windowclosed(windowevent e) 窗口被关闭后 public void windowiconified(windowevent e) 窗口由正常大小变为最小化图标时 public void windowdeiconified(windowevent e) 窗口由最小化图标恢复成正常大小时 例 : 创建事件类 WindowEvent 的应用 建立窗口 frm 对象, 并在其上添加一个标签对象, 用来显示对窗口的各种不同操作 1.import java.awt.*; 2.import java.awt.event.*; 3.public class WindowEventDemo extends Frame{ 4. static Label lab=new Label(); 5. static WindowEventDemo frm=new WindowEventDemo(); 6. static MyWinListener winlist=new MyWinListener(); 7. public static void main(string args[]){ 8. frm.setlayout(null); 9. frm.settitle(" 窗口事件 "); 10. frm.setbounds(120,50,215,100); 11. lab.setbounds(25,25,150,50); 12. frm.add(lab); 13. frm.addwindowlistener(winlist); 14. frm.setvisible(true); 15. } 16. static class MyWinListener implements WindowListener{ 17. public void windowopened(windowevent e){ 18. lab.settext(" 打开新窗口 "); 19. } 20. public void windowactivated(windowevent e){ 21. lab.settext(" 窗口被激活 "); 22. } 23. public void windowiconified(windowevent e){ 24. frm.settitle(" 窗口被最小化 "); 25. } 131

24 7 Java 程序设计案例教程 26. public void windowdeiconified(windowevent e){ 27. frm.settitle(" 窗口被还原成正常大小 "); 28. } 29. public void windowclosing(windowevent e){ 30. frm.dispose(); 31. System.exit(0); 32. } 33. public void windowdeactivated(windowevent e){} 34. public void windowclosed(windowevent e){} 35. } 36. } 运行结果如图 7-20 所示 图 7-20 窗口事件 6. 适配器类 (Adapter) 通过接口来完成事件处理时, 尽管某些没有用到, 但也要同时实现该接口的所有 但是有时只是需要对其中的某些进行处理, 因此写上所有显得很麻烦 为了方便起见,Java 为某些监听者接口提供了适配器类, 当需要对某种事件进行处理时, 只需要让事件处理类继承事件所对应的适配器类, 覆盖本次操作用到的事件处理即可, 不必实现无关的事件处理 适配器类是一个类而不是一个接口, 因而处理事件的类只能继承一个适配器类 当该类需要处理多种事件时, 通过继承适配器类的是不行的 但可以基于适配器类, 用内部类的来处理这种情况 如果想用作事件监听者的类已经继承了其他类, 就不能用适配器类, 只能去实现事件监听者接口了 接口与其对应的适配器类如表 7-28 所示 表 7-28 接口对应的适配器类 接口名称 适配器名称 ComponentListener ComponentAdapter( 组件监听适配器 ) ContainerListener ContainerAdapter( 容器监听适配器 ) FocusListener FocusAdapter( 焦点监听适配器 ) KeyListener KeyAdapter( 键盘监听适配器 ) MouseListener MouseAdapter( 鼠标监听适配器 ) MouseMotionListener MouseMotionAdapter( 鼠标移动监听适配器 ) WindowListener WindowAdapter( 窗口监听适配器 ) 132

25 单元七 Java GUI 应用程序开发 7 7. 键盘事件 (KeyEvent) 及处理键盘事件类 KeyEvent 继承自 InputEvent 类 当用户在键盘上输入字符时便会触发此类事件 KeyEvent 类的常用如表 7-29 所示 表 7-29 KeyEvent 类的常用 public char getkeychar() public int getkeycode() public boolean isactionkey() 返回按下的字符 返回按下字符的代码 判断所按下的键是否为 Action Key, 所谓 Action Key 是指方向键 PgUp PgDn 与 F1~F12 等键 使用 KeyListener 接口处理 KeyEvent 事件时, 必须以类实现 KeyListener 接口, 该接口里 声明了 3 个 KeyListener 接口的如表 7-30 所示 表 7-30 KeyListener 接口的 处理事件的 public void keypressed(keyevent e) public void keyreleased(keyevent e) public void keytyped(keyevent e) 按下按键时发生 放开按键时发生 事件 单击字符时发生, 即按下按键与放开按键这一整个事件, 但不包括输入 Action Key 8. 鼠标事件 (MouseEvent) 及处理鼠标事件类 MouseEvent 是一些常见的鼠标操作 如鼠标单击事件源 鼠标指针进入或离开事件源, 移动 拖动鼠标等操作, 均会触发鼠标事件 鼠标事件类 MouseEvent 的常用如表 7-31 所示 表 7-31 MouseEvent 的常用 public Point getpoint() public int getx() public int gety() 返回鼠标按钮被按下时的点的坐标, 返回的是 Point 类型返回鼠标按钮被按下时的点的 x 坐标返回鼠标按钮被按下时的点的 y 坐标 MouseEvent 类一般以 MouseListener 接口或 MouseMotionListener 接口作为监听者 MouseListener 接口的如表 7-32 所示 MouseMotionListener 接口的如表 7-33 所示 表 7-32 MouseListener 接口的 处理事件的 public void mouseclicked(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mousepressed(mouseevent e) public void mousereleased(mouseevent e) 事件在事件源上单击鼠标按钮时发生鼠标指针移入事件源上方时发生鼠标指针移出事件源上方时发生按下鼠标的任一按钮时发生放开鼠标被按下的按钮时发生 133

26 7 Java 程序设计案例教程 注意 : 上述 5 个鼠标事件中有些事件几乎是同时发生 对于 mouseclicked mousepressed 与 mousereleased 这 3 个事件的触发顺序是 :mousereleased 事件先发生, 然后 mouseclicked 发生, 最后是 mousepressed 发生 表 7-33 MouseMotionListener 接口的 处理事件的 事件 public void mousedragged(mouseevent e) public void mousemoved(mouseevent e) 拖动鼠标时发生 移动鼠标时发生 1.import java.awt.*; 2.import java.awt.event.*; 3.public class TestMouseEvent extends Frame{ 4.Graphics g; 5.int x,y,ox,oy; 6.public TestMouseEvent(String title){ 7. super(title); 8. setsize(200,200); 9. setvisible(true); 10. g=this.getgraphics(); 11. g.setcolor(color.red); 12. addmousemotionlistener(new MyMouseMotionAdapter()); 13. addmouselistener(new MyMouseAdapter()); 14.} 15.public static void main(string[] args){ 16. TestMouseEvent f=new TestMouseEvent(" 绘制图形 "); 17.} 18.class MyMouseMotionAdapter extends MouseMotionAdapter{ 19. public void mousedragged(mouseevent e){ 20. x=e.getx();y=e.gety(); 21. g.drawline(ox,oy,x,y); 22. ox=x;oy=y; 23 } 24.} 25. class MyMouseAdapter extends MouseAdapter{ 26. public void mousepressed(mouseevent e){ 27. ox=e.getx();oy=e.gety(); 28. } 29. } 30.} 134

27 单元七 Java GUI 应用程序开发 7 程序通过继承适配器类实现事件处理 由于主类 TestMouseEvent 已经继承了其他类, 所以又定义了两个内部类分别继承鼠标事件 (MouseEvent) 的监听接口 MouseListener 和 MouseMotionListener( 如代码第 18~29 行 ) 第 20 行表示若移动鼠标获取当前坐标, 第 21 行根据获得的坐标绘图, 也就是鼠标移动的轨迹 第 12~13 行分别将内部类的对象注册为事件监听者 1. 简述事件机制和原理 2. 编写事件处理程序, 窗口中包含两个组件, 一个按钮, 一个文本区, 当单击按钮后, 文本区中的字体颜色设置为红色 Swing 组件 1. 按钮 (1) 基本概念按钮是 Java 图形用户界面的基本组件之一, 经常用到的按钮有 4 种形式 :JButton JToggleButton JCheckBox JradioButton, 这些按钮类均是 AbstractButton 的子类或间接子类 它们之间的继承关系如图 7-21 所示 AbstractButton JButton JToggleButton JMenuItem JCheckBox JRadioButton 图 7-21 按钮类继承关系 (2) 普通按钮 JButton 是最简单的按钮, 其主要如表 7-34 所示 表 7-34 JButton 类 JButton() JButton(Icon icon) 创建一个既没有显示文本也没有图标的按钮 创建一个没有显示文本但有图标的按钮 135

28 7 Java 程序设计案例教程 续表 JButton(String text) JButton(String text,icon icon) 创建一个有显示文本但没有图标的按钮 创建一个既有显示文本又有图标的按钮 例 : 程序运行时, 每当按动按钮时, 就会在屏幕上交替显示出两条不同信息 1.import java.awt.*; 2.import java.awt.event.*; 3.import javax.swing.*; 4.class JButtonExample extends WindowAdapter implements ActionListener{ 5. JFrame f; 6. JButton b; 7. JTextField tf; 8. int tag=0; 9. public static void main(string[] args){ 10. JButtonExample be=new JButtonExample(); 11. be.go(); 12. } 13. public void go(){ 14. f=new JFrame("JButton Example"); 15. b=new JButton("Sample"); 16. b.addactionlistener(this); 17. f.getcontentpane().add(b,"south"); 18. tf=new JTextField(); 19. f.getcontentpane().add(tf,"center"); 20. f.addwindowlistener(this); 21. f.setsize(300,200); 22. f.setvisible(true); 23. } 24. public void actionperformed(actionevent e){ 25. String s1=" 你已经按过按钮!"; 26. String s2=" 请下次再试!"; 27. if(tag==0){ 28. tf.settext(s1); 29. tag=1; 30. }else{ 31. tf.settext(s2); 32. tag=0; 33. } 34. } 35. public void windowclosing(windowevent e){ 36. System.exit(0); 37. } 38. } 136

29 单元七 Java GUI 应用程序开发 7 运行结果如图 7-22 所示 图 7-22 JButton 按钮 (3) 切换按钮 复选按钮及单选按钮 切换按钮 (JToggleButton) JToggleButton 是具有两种状态的按钮, 即选中和未选中状态 JToggleButton 的如表 7-35 所示 表 7-35 JToggleButton 的 JToggleButton() JToggleButton(Icon icon) JToggleButton(Icon icon,boolean selected) JToggleButton(String text) JToggleButton(String text, Boolean selected) JToggleButton(String text, Icon icon) JToggleButton(String text, Icon icon,boolean selected) 创建一个既没有显示文本也没有图标的切换按钮 创建一个没有显示文本但有图标的切换按钮 创建一个有图标和指定初始状态但没有显示文本的切换按钮 创建一个有显示文本但没有图标的切换按钮 创建一个有显示文本和指定初始状态但没有图标的切换按钮 创建一个既有显示文本又有图标的切换按钮 创建一个既有显示文本又有图标和指定初始状态的切换按钮 复选按钮 (JCheckBox) JCheckBox 是具有两种状态的按钮, 即选中和未选中状态 JCheckBox 的如表 7-36 所示 表 7-36 JCheckBox 的 JCheckBox() JCheckBox(Icon icon) JCheckBox(Icon icon,boolean selected) JCheckBox(String text) JCheckBox(String text, Boolean selected) JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, Boolean selected) 创建一个既没有显示文本也没有图标的复选按钮创建一个没有显示文本但有图标的复选按钮创建一个有图标和指定初始状态但没有显示文本的复选按钮创建一个有显示文本但没有图标的复选按钮创建一个有显示文本和指定初始状态但没有图标的复选按钮创建一个既有显示文本又有图标的复选按钮创建一个既有显示文本又有图标和指定初始状态的复选按钮 137

30 7 Java 程序设计案例教程 单选按钮 (JRadioButton) JRadioButton 是具有两种状态的按钮, 即选中和未选中状态 JRadioButton 的如表 7-37 所示 表 7-37 JRadioButton 类 JRadioButton() JRadioButton(Icon icon) JRadioButton(Icon icon,boolean selected) JRadioButton(String text) JRadioButton(String text, Boolean selected) JRadioButton(String text, Icon icon) JRadioButton(String text, Icon icon,boolean selected) 创建一个既没有显示文本也没有图标的单选按钮创建一个没有显示文本但有图标的单选按钮创建一个有图标和指定初始状态但没有显示文本的单选按钮创建一个有显示文本但没有图标的单选按钮创建一个有显示文本和指定初始状态但没有图标的单选按钮创建一个既有显示文本又有图标的单选按钮创建一个既有显示文本又有图标和指定初始状态的单选按钮 注意 : 在 JToggleButton 类中定义了一个 isselected(), 通过该可以获知按钮的当前状态 : 当返回值为真 (true) 时表示处于选中状态, 而返回值为假 (false) 时则表示处于未选中状态 2. 标签标签对象通常用于显示提示性的文本信息或图标 JLable 的如表 7-38 所示 表 7-38 JLable 的 JLable() JLable(Icon image) JLable(String text) JLable(Icon image,int horizontalalignment) JLable(String text,int horizontalalignment) JLable(String text,icon icon,int horizontalalignment) 构造一个既不显示文本信息也不显示图标的空标签构造一个显示图标的标签构造一个显示文本信息的标签构造一个显示图标的标签, 水平对齐方式由 int 型参数指定构造一个显示文本信息的标签, 水平对齐方式由 int 型参数指定构造一个同时显示文本信息和图标的标签, 水平对齐方式由 int 型参数指定 3. 组合框 组合框是一个下拉式菜单, 它有两种形式 : 不可编辑的和可编辑的 JComboBox 的和常用如表 7-39 所示 138

31 单元七 Java GUI 应用程序开发 7 表 7-39 JComboBox 常用的和 JComboBox() JComboBox(Object[] items) public void additem(object anobject) public void insertitemat(object anobject,int index) public void removeallitems() public void removeitem(object anobject) public void removeitemat(int anindex) 创建一个没有任何可选项的组合框 根据 Object 数组创建组合框,Object 数组的元素即为组合框中的可选项 在末尾位置添加新的可选项 在 index 指定的位置添加新的可选项 anobject 删除所有可选项 删除由 anobject 指定的可选项 删除指定位置 ( 由 anindex 指定 ) 的可选项 4. 列表列表是可供用户进行选择的一系列选项 JList 有 4 种, 如表 7-40 所示 表 7-40 JList JList() JList(ListModel datamodel) JList(Object[] listdata) JList(Vector listdata) 构造一个空列表构造一个列表, 列表的可选项由 ListModel 型参数 datamodel 指定构造一个列表, 列表的可选项由对象数组 listdata 指定构造一个列表, 列表的可选项由 Vector 型参数 ListData 指定 5. 文本组件 (1) 基本概念文本组件可用于显示信息和提供用户输入功能, 在 Swing 中提供了文本域 (JTextField) 口令输入域 (JPasswordField) 文本区(JTextArea) 等多个文本组件, 这些文本组件都有一个共同的基类 JTextComponent 在 JTextComponent 中定义的主要如表 7-41 所示 表 7-41 JTextComponent 类主要 getselectedtext() gettext() gettext(int offs,int len) select(int start,int end) selectall() seteditable(boolean b) settext(string t) setdocument(document doc) 从文本组件中提取被选中的文本内容从文本组件中提取所有文本内容从文本组件中提取指定范围的文本内容在文本组件中选中指定范围的文本内容在文本组件中选中所有文本内容设置为可编辑或不可编辑状态设置文本组件中的文本内容设置文本组件的文档 139

32 7 Java 程序设计案例教程 续表 Copy() Cut() Paste() 复制选中的文本到剪贴板 剪切选中的文本到剪贴板 将剪贴版的内容粘贴到当前位置 (2) 文本域文本域是一个单行的文本输入框, 可用于输入少量文本 文本域有 5 种, 如表 7-42 所示 表 7-42 JTextField 类 JTextField() JTextField(int columns) JTextField(String text) JTextField(String text,int columns) JTextField(Document doc,string text,int columns) 构造一个空文本域 构造一个具有指定列数的空文本域,int 型参数 columns 指定文本域的列数 构造一个显示指定初始字符串的文本域,String 型参数 text 指定要显示的初始字符串 构造一个具有指定列数 并显示指定初始字符串的文本域,String 型参数 text 指定要显示的初始字符串,int 型参数 columns 指定文本域的列数 构造一个使用指定文档 具有指定列数 并显示指定初始字符串的文本域,Document 型参数 doc 指定使用的文档, String 型参数 text 指定要显示的初始字符串,int 型参数 columns 指定文本域的列数 (3) 文本区文本区是一个多行多列的文本输入框 JTextArea 的如表 7-43 所示 表 7-43 JTextArea 的 JTextArea() JTextArea(String text) JTextArea(int rows,int columns) JTextArea(String text,int rows,int columns) JTextArea(Document doc) JTextArea(Document doc,string text,int rows,int columns) 构造一个空文本区 构造一个显示指定初始字符串的文本区,String 型参数 text 指定要显示的初始字符串 构造一个具有指定行数和列数的空文本区,int 型参数 rows 和 columns 分别指定文本区的行数和列数 构造一个具有指定行数和列数, 并显示指定初始字符串的文本区,String 型参数 text 指定要显示的初始字符串,int 型参数 rows 和 columns 分别指定文本区的行数和列数 构造一个使用指定文档的文本区 构造一个使用指定文档的文本区, 具有指定的行数和列数, 并显示指定初始字符串 140

33 单元七 Java GUI 应用程序开发 7 6. 菜单组件 (1) 基本概念菜单也是最常用的 GUI 之一,Swing 包中提供了多种菜单组件, 它们的继承关系如图 7-23 所示 Object Component Container JComponent JMenuBar JPopupMenu JAbstractButton JSeparator JMenuItem JMenu JCheckboxMenuItem JRadioButtonMenuItem 图 7-23 菜单类继承关系 (2) 菜单栏菜单栏是窗口中的主菜单, 用来包容一组菜单 JMenuBar 的见表 7-44 表 7-44 JMenuBar 的 JMenuBar() 创建一个菜单栏 (3) 菜单菜单是最基本的下拉菜单, 用来包容一组菜单项或子菜单 JMenu 的见表 7-45 表 7-45 JMenu 的 public JMenu(String label) 创建一个下拉菜单, 其中 String 型参数 label 指定了菜单上的文本 一级 (4) 菜单项 如果将整个菜单系统看作是一棵树, 那么菜单项就是这棵树的叶子, 是菜单系统最下 141

34 7 Java 程序设计案例教程 JMenuItem 的见表 7-46 表 7-46 JMenuItem 的 JMenuItem(Icon icon) JMenuItem(String text) JMenuItem(String text,icon icon) JMenuItem(String text,int mnemonic) 构造一个只显示图标的菜单项构造一个只显示文本的菜单项构造一个同时显示文本和图标的菜单项构造一个显示文本并且有快捷键的菜单项 (5) 复选菜单项和单选菜单项复选菜单项和单选菜单项是两种特殊的菜单项 可以对其做选中和不选中操作 JCheckBoxMenuItem 的见表 7-47 表 7-47 JCheckBoxMenuItem 的 JCheckBoxMenuItem(Icon icon) JCheckBoxMenuItem(String text) JCheckBoxMenuItem(String text,boolean b) JCheckBoxMenuItem(String text, Icon icon) JCheckBoxMenuItem(String text, Icon icon, boolean b) 构造一个只显示图标的复选菜单项构造一个只显示文本的复选菜单项构造一个只显示文本的复选菜单项, 并且可设定选中状态构造一个既显示图标又显示文本的复选菜单项构造一个既显示图标又显示文本的复选菜单项, 并且可以设定选中状态 (6) 弹出式菜单弹出式菜单是一种比较特殊的独立菜单, 可以根据需要显示在指定位置 JPopupMenu 的两种和常用见表 7-48 表 7-48 JPopupMenu 的和常用 public JPopupMenu() public JPopupMenu(String label) public void show(component invoker,int x,int y) 构造一个没有名称的弹出式菜单构造一个有指定名称的弹出式菜单在这个中需要一个组件作为参数, 该组件的位置将作为显示弹出式菜单的参考原点 注意 : 显示弹出式菜单必须使用 show() 7. 对话框 (1) 对话框对话框是与框架类似的可移动窗口, 它与框架的区别在于 : 对话框具有较少的修饰并且能够被设置为 模式 窗口, 即在该窗口被关闭之前, 其他窗口无法接收任何形式的输入 JDialog 的见表

35 单元七 Java GUI 应用程序开发 7 表 7-49 JDialog 的 JDialog(Frame owner) JDialog(Frame owner,boolean modal) JDialog(Frame owner,string title) JDialog(Frame owner,string title,boolean modal) 构造一个没有标题的非模式对话框构造一个没有标题的对话框,boolean 型参数 modal 指定对话框是否为模式窗口构造一个有标题的非模式对话框,String 型参数 title 指定对话框的标题构造一个有标题的对话框,String 型参数 title 指定对话框的标题,boolean 型参数 modal 指定对话框是否为模式窗口 注意 : 应当将对话框视为一种可以反复使用的资源, 即当某个对话框不需要显示时, 不要立即将其清除, 而是继续保留它, 等待以后再用 (2) 标准对话框 JDialog 通常用于创建自定义的对话框, 除此之外, 在 Swing 中还提供了用于显示标准对话框的 JOptionPane 类 在 JOptionPane 类中定义了多个 showxxxdialog 形式的静态, 如表 7-50 所示 表 7-50 JOptionPane 类中 showxxxdialog 形式的静态 showconfirmdialog showmessagedialog showoptiondialog showinputdialog 确认对话框, 显示问题, 要求用户确认信息对话框, 显示信息, 告知用户发生了什么情况选项对话框, 显示选项, 要求用户选择输入对话框, 提示用户输入 (3) 文件对话框文件对话框是专门用于对文件进行浏览和选择的对话框 JFileChooser 的三种和常用, 如表 7-51 所示 表 7-51 JFileChooser 和常用 JFileChooser() JFileChooser(File currentdirectory) JFileChooser(String currentdirectorypath) showopendialog(component parent) showsavedialog(component parent) showdialog(component parent,string s) 根据用户的默认目录创建文件对话框根据 File 型参数 currentdirectory 指定的目录创建文件对话框根据 String 型参数指定的目录创建文件对话框将显示一个 打开 文件的对话框将显示一个 保存 文件的对话框显示一个 自定义 文件的对话框 注意 : 刚创建的对话框是不可见的, 可以调用将其显示出来 143

36 7 Java 程序设计案例教程 1. 简述图形用户界面的构成成分以及各自的作用? 2. 叙述 AWT 和 Swing 组件的关系? 3. 什么是事件源? 什么是监听者?Java 语言的图形用户界面中, 谁可以充当事件源? 谁可以充当监听者? 4. 动作事件的事件源可以有哪些? 如何响应动作事件? 5. 简述 Java 的事件处理机制? 6. 组件与容器有何异同? 7.Frame 和 Dialog 有何异同? 8. 编程实现如图 7-24 所示的窗口 当点击窗口的关闭按钮时, 会弹出对话框, 对话框包含三个组件, 一个标签和两个按钮 当点击 是 按钮时, 窗口被关闭 ; 当点击 取消 按钮时, 对话框被隐藏, 窗口不动 图 7-24 练习 8 9. 编写如图 7-25 所示的事件处理程序 窗口中有两个菜单 ( 颜色和窗口 ), 颜色菜单包含四个菜单项 ( 红色 绿色 蓝色和斜体 ), 窗口菜单下有一个菜单项 ( 关闭 ) 当点击菜单项时, 文本区中字体的格式会发生相应的变化 ; 当点击 关闭 菜单项时, 窗口被关闭 图 7-25 练习 9 144

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes (Swing) AWTEvent Font LayoutManager 1 Classes in the javax.swing package Heavyweight FontMetrics Object Color Panel Applet JApplet Graphics Component Container Window Frame JFrame * Dialog JDialog JComponent

More information

Swing-02.pdf

Swing-02.pdf 2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //

More information

chp8.ppt

chp8.ppt Java 软件设计基础 图形用户界面程序设计入门 1. 组件概述 GUI: Graphics User Interface 设计和实现 GUI 的主要难点 创建组成界面的各成分和元素, 指定它们的属性和位置关系, 根据具体需要布局排列, 从而构成完整的 GUI 的外观表象 ; 在 GUI 程序中, 代码所执行的路线及顺序都是很不确定的 在 GUI 程序中, 用户可以点击任意按键并和屏幕上的其他任何部分进行交互及信息传递

More information

Java事件处理模型

Java事件处理模型 Java 事件处理模型 北京理工大学计算机学院 金旭亮 事件驱动 的软件系统 面向对象的软件系统许多是 事件驱动 的, 通常定义了一系列的事件, 并且事先规定好这些事件发生时应该如何响应 由于事件的发生通常是离散的, 所以 事件驱动 的软件系统并没有一个固定的执行流程 Java 的 GUI 应用程序也是 事件驱动 的 2014/11/17 金旭亮 Java 编程系列 (2014 版 ) 2 Java

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes What is a JavaBean? JavaBean Java JavaBean Java JavaBean JComponent tooltiptext font background foreground doublebuffered border preferredsize minimumsize maximumsize JButton. Swing JButton JButton() JButton(String

More information

第1章

第1章 第 17 章 有來有往 互動式視窗程式 1 本章提要 17.1 前言 17.2 元件 Event 觸發 17.3 Event 監聽者 Listener 17.4 Event 接收者 Adapter 17.5 Event 類別及提供的函式 17.5.1 MouseEvent 17.5.2 KeyEvent 17.5.3 TextEvent 17.5.4 WindowEvent 17.5.5 其他 Event

More information

Microsoft Word - 投影片ch18

Microsoft Word - 投影片ch18 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十八章事件處理 本章學習目標認識 Java 的委派事件模式認識並學習使用各種事件處理類別學習各種物件的事件處理 事件處理 18-2 18.1 委派事件模式 Java 的事件處理是採取 委派事件模式 (delegation event model) 委派事件模式是指當事件發生時, 產生事件的物件會把此一 訊息 轉給

More information

<4D F736F F F696E74202D C DB5DA3136D5C25FCAC2BCFEC7FDB6AFB3CCD0F2C9E8BCC62E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D C DB5DA3136D5C25FCAC2BCFEC7FDB6AFB3CCD0F2C9E8BCC62E BBCE6C8DDC4A3CABD5D> 第 16 章事件驱动程序设计 1 动因 假如希望编写一个 GUI 程序, 提示用户输入贷款总额 年利率和年数, 然后点击 Compute Loan 按钮获取月偿还 额和总偿还额 如何完成这个任务呢? 必须使用事件驱 动程序设计来编写代码以响应点击按钮事件 LoanCalculator Run 2 动因 假设希望编写程序用动画实现一面旗上升, 如图 16.1(b-d) 所示 如何完成这个任务呢? 解决这个问题的方式有好几

More information

图形用户界面 (GUI) 设计

图形用户界面 (GUI) 设计 2013-2014 学年度第二学期课程 C 语言程序设计 Java 语言程序设计面向过程编程方法 编程方法学 新疆农业大学计算机与信息工程学院 陈燕红 :cyh@xjau.edu.cn 图形用户界面 (GUI) 设计 参考 C:\Program Files\Java\jdk1.6.0_10\demo 教学内容 1 Java 图形用户界面设计概述 2 3 4 AWT 组件集 事件处理 Swing

More information

授课内容 内容 图形界面与控制台应用的区别 (Console Application) 第 6 章图形用户界面图形用户界面 (Graphical User Interface,GUI), 使用图形方式借助菜单 按钮等标准界面元素和键盘 鼠标操作, 实现人机交互 内容和要求 : 掌握 Java Swi

授课内容 内容 图形界面与控制台应用的区别 (Console Application) 第 6 章图形用户界面图形用户界面 (Graphical User Interface,GUI), 使用图形方式借助菜单 按钮等标准界面元素和键盘 鼠标操作, 实现人机交互 内容和要求 : 掌握 Java Swi 金陵科技学院教案 第 9 10 11 次课授课学时 6 教案完成时间 : 2014.2 章 节 第六章图形用户界面 6-1 AWT 组件及其属性类 6-2 事件处理 6-3 Swing 组件及事件 6-4 图形图像 ( 以自学为主 ) 1. AWT 组件及其属性类 主要内容 2. 事件处理 3. Swing 组件及事件 4. 图形图像 目的与要求 1. 掌握 Java Swing 组件的使用方法,

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 按钮对象 (button) 当 JavaScript 读到 标记中的 type 属性值为 button 时, 自动建立一个按钮对象, 并将该对象放到表单对象的 elements 数组当中 按钮对象包括 : 普通按钮 (button) 提交按钮 (submit) 重置按钮 (reset) 1. 使用按钮对象的格式 document.forms[ 索引值 ].elements[ 索引值

More information

<4D F736F F F696E74202D C DB5DA3132D5C25FCDBCD0CED3C3BBA7BDE7C3E6BBF9B4A12E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D C DB5DA3132D5C25FCDBCD0CED3C3BBA7BDE7C3E6BBF9B4A12E BBCE6C8DDC4A3CABD5D> 第 12 章图形用户界面基础 1 动因 为 Java GUI 程序设计而设计的 API 是如何应用面向对象 原则的绝佳范例 从本章开始将学习 Java GUI API 的框 架结构, 还要学习如何使用 GUI 组件为应用程序和 applet 开发用户友好接口 2 学习目标 区分 Swing 和 AWT 的不同 ( 第 12.2 节 ) 描述 Java GUI API 的层次体系结构 ( 第 12.3

More information

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

<4D F736F F F696E74202D20B5DA37D5C2204A617661B5C4CDBCD0CED3EBD3C3BBA7BDE7C3E62E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20B5DA37D5C2204A617661B5C4CDBCD0CED3EBD3C3BBA7BDE7C3E62E BBCE6C8DDC4A3CABD5D> 第 7 章 Java 的图形与用户界面 7.1 概述 7.2 底层容器类 JFrame 和 JApplet 7.3 容器的布局 74 7.4 字体和颜色的使用 7.1 概述 利用 Java 中的图形 图像和重要的图形界面组件 (Componet) p 可以实现不同外观要求的窗口 图形和交互方式 1.java.awt awt 包 AWT 是抽象窗口工具集 Abstract Window Toolkit

More information

untitled

untitled OGRE http://antsam.blogone.net AntsamCGD@hotmail.com OGRE OGRE listener listener target listener target Dispatcher Processor Input Reader Event class view Event Class view Input Event ctrlaltshift ascoll

More information

Microsoft Word - Java全文.doc

Microsoft Word - Java全文.doc 第 4 章事件模型与事件处理 本章导读 本章首先介绍事件处理的由来, 并描述基于窗口的事件驱动程序的流程, 接着详细阐述 AWT 事件处理模型, 主要涉及三类对象 : 事件源 监听器和事件处理方法, 并说明事件处理机制, 具体介绍事件类 事件监听器 AWT 事件及其相应的监听器接口 事件适配器和常用的四种对事件的响应, 最后介绍开发一个基于 Java 平台事件驱动模型的记事本的案例 本章要点 事件处理的流程和机制

More information

Microsoft Word - 投影片ch17

Microsoft Word - 投影片ch17 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十七章 AWT 視窗物件 本章學習目標認識 AWT 類別認識並學習如何建立視窗物件學習如何管理與配置版面學習 Panel 類別的使用 AWT 視窗物件 17-2 17.1 認識 AWT 類別 AWT(Abstract Windowing Toolkit) 是用來處理視窗最基本的方式 17.1.1 簡單的範例 下面是一個簡單的視窗程式設計的範例

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第 7 章 Java 中的 GUI 编程 图形用户界面 (Graphical User Interface,GUI) 使用图形的方式, 借助菜单 按钮等标准界面元素和鼠标操作, 帮助用户方便地向计算机系统发送指令, 启动操作, 并将系统运行的结果同样以图形方式显示给用户 图形用户界面操作简单, 省去了字符界面用户必须记忆各种命令的麻烦, 深受广大用户的喜爱和欢迎 所以学习设计和开发图形用户界面, 是应用软件开发人员的必修课

More information

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 Web (CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 1092 1/ 16 30.75 748 2005 1 1 2005 1 1 : 1 3 100

More information

图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充

图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充 图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充 例 2 单击 CLEAR, 重新回到初始状态, 下面让我们看一下自交多边形的情况 当单击数次后, 出现左图的情况, 之后我们单击

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

第1章

第1章 第 18 章 Swing 1 本章提要 18.1 前言 18.2 Swing 介紹 18.3 視窗元件 18.3.1 JFrame 18.3.2 Content Pane 18.3.3 Menu Bar 18.4 Swing 元件 18.4.1 JCheckBox JRadioButton JComboBox 18.4.2 JTextField JPasswordField 18.4.3 JTable

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第一部分基本实验 31 contentpane.add(p); setjmenubar(mb); // 将菜单项注册给事件监听者 File_Open.addActionListener(this); File_Close.addActionListener(this); File_Exit.addActionListener(this); Edit_Copy.addActionListener(this);

More information

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y 拼图游戏 任务说明 本实例实现了拼图游戏的开发 运行程序, 单击 开始 按钮将打乱图片的位置, 效果如图 1 所示, 然后通过鼠标单击图片进行移动, 直到将所有图片都移动到正确位置, 游戏过关, 过关后的效果如图 2 所示 图 1 打乱图片位置的效果图 2 图片移动到正确位置的效果 关键技术 本程序主要通过 Swing 与枚举类实现, 程序将一幅完整的图片平均分成 9 部分, 每一部分为一个正方形,

More information

幻灯片 1

幻灯片 1 图形界面程序设计 计算机信息系 课程引入说课提纲 案例 体验 双击运行 FiveMain.jar 文件, 和同桌一起体验下这个五子棋游戏, 并观察下这个游戏有哪些部分组成? 课程引入说课提纲 提出 问题 这个五子棋游戏和我们前几章完成的 学生综合素质评测系统 最大的区别是什么? 有什么优点或缺点吗? 1 图形用户界面是什么? 2 怎么用图形用户界面开发? 课程引入说课提纲 任务 任务名称 总任务 :

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

Microsoft PowerPoint - ch02

Microsoft PowerPoint - ch02 第 一 篇 基 礎 圖 文 動 畫 (Basic Graphics / Animation) 2 1 簡 介 2 2 Frame Class 2 3 執 行 緒 繪 圖 流 程 2 4 Font Class 2 5 Color Class 2 6 中 文 處 理 2 7 習 題 (Exercises) 第 二 章 文 字 繪 製 (Words) 2 1 簡 介 本 書 探 討 的 是 動 畫 遊 戲,

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

Microsoft PowerPoint - course8.ppt

Microsoft PowerPoint - course8.ppt 回顧 Java 程式設計基礎班 (8) Java Data Structure 劉根豪台大電機所網路資料庫研究室 Email: kenliu@arbor.ee.ntu.edu.tw 1 2 Java AWT package Java Swing package Component: 一些 GUI 元件, 如 :Button Label 等 Container: 用來放置 GUI 元件的地方 Container

More information

Microsoft Word - 投影片ch23

Microsoft Word - 投影片ch23 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第二十三章認識 Swing 本章學習目標 Swing 概述認識 JFrame 類別學習 Swing 的基本物件學習 Swing 物件之間的互動 認識 Swing 23-2 23.1 Swing 概述 Swing 提供了豐富的物件 更美觀的圖形介面, 以及更高的執行效率 幾乎每一個 AWT 物件都有一個相對應的 Swing

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt Java 程式設計基礎班 (8) 莊坤達台大電信所網路資料庫研究室 Email: doug@arbor.ee.ntu.edu.tw Class 8 1 回顧 Java Data Structure Class 8 2 Java AWT package Component: 一些 GUI 元件, 如 : Button Label 等 Container: 用來放置 GUI 元件的地方 Container

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

chp11.ppt

chp11.ppt Java 软 件 设 计 基 础 Applet 程 序 1.Applet 概 念 Applet 与 Application Application 是 能 独 立 运 行 的 程 序 单 位 ; Applet 程 序 不 能 独 立 运 行, 必 须 依 附 在 网 页 上, 借 助 于 浏 览 器 才 能 运 行 通 常 置 于 服 务 器 端, 当 用 户 连 接 到 该 网 页,Applet

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

第1章

第1章 第 16 章 千變萬化的視窗程式 1 本章提要 16.1 前言 16.2 AWT package 介紹 16.3 視窗 (Frame) 16.4 版面管理員 (Layout Manager) 16.5 各種好用的圖形介面元件 16.5.1 勾選元件 Checkbox 16.5.2 文字框 TextField 16.5.3 列示 List 16.5.4 標籤 Label 16.5.5 選單 Menu

More information

1.3 最终效果图 : 2 内部布局代码 2.1 按键按钮代码 // 初始化计算器上键的按钮, 将键放在一个画板内 JPanel keypanel = new JPanel(); // 用网格布局器,4 行,5 列的网格, 网格之间的水平方向间隔为 3 个象素, 垂直方向间隔为 3 个象素 keyp

1.3 最终效果图 : 2 内部布局代码 2.1 按键按钮代码 // 初始化计算器上键的按钮, 将键放在一个画板内 JPanel keypanel = new JPanel(); // 用网格布局器,4 行,5 列的网格, 网格之间的水平方向间隔为 3 个象素, 垂直方向间隔为 3 个象素 keyp 计算器 1. 计算器上的键的显示名字 1.0 继承 JFrame 类 public class Calculate extends JFrame { 1.1 定义常量 计算器上的键的显示名字 public final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x",

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

chp9.ppt

chp9.ppt Java 软件设计基础 高级 GUI 设计与多媒体技术 1. 布局设计 布局概述 java.awt FlowLayout BorderLayout CardLayout GridLayout GridBagLayout java.swing BoxLayout ScrollPanelLayout ViewportLayout OverLayout FlowLayout 布局策略 将容器的组件按照加入的先后顺序从左至右依次排列,

More information

Microsoft PowerPoint - 18_Event.pptx

Microsoft PowerPoint - 18_Event.pptx 第十八章事件處理 認識 Java 的委派事件模式認識並學習使用各種事件處理學習各種物件的事件處理 1 18.1 委派事件模式 委派事件 指當事件發生時, 產生事件的物件會把 訊息 轉給 事件傾聽者 (event listener) 處理 下圖說明 委派事件模式 的運作流程 : 2 簡單的範例 18.1 委派事件模式 視窗內加入按鈕, 尚未加入事件的處理之程式 : 視窗內有一按鈕, 當此按鈕按下時,

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

可 Web 编程的NativeUI 设计与实现

可 Web 编程的NativeUI  设计与实现 可 Web 编程的 NativeUI 设计与实现 张袁炜 zhangyuanwei@baidu.com 欢迎转岗简历请发 About Me @ 张袁炜 直达号 网址导航 百度 音乐 前端 Node.js Android Arduino RaspberryPI https://github.com/zhangyuanwei Outline 一个 Hybrid App 的进化史 Native UI 实现原理

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

Microsoft Word - 投影片ch19

Microsoft Word - 投影片ch19 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十九章 AWT 的其它物件 本章學習目標學習選擇表單與下拉選單學習功能表的製作學習捲軸的製作學習各種對話方塊與其相關應用 AWT 的其它物件 19-2 19.1 選擇表單 選擇表單 (list) 可用來一次顯示多個選項 19.1.1 用 List 類別建立選擇表單 下表列出了 List 類別的建構元與常用的 method:

More information

NetBeans学习笔记

NetBeans学习笔记 NetBeans 学习笔记第一章 NetBeans 集成开发环境创建第一个 NetBeans 项目打开 NetBeans, 新建项目 应用程序 项目名称: firstexample, 设定存储位置 在 main 函数下输入代码 : System.out.println( 欢迎使用 NetBeans5.0, 这是第一个例子 ); 保存 运行 源代码编辑器尽管可视化开发大大缩短了开发人员的时间, 但是代码的编写还是不可被取代的,

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

Topic

Topic 二 级 JAVA 上 机 试 题 汇 编 第 01 套 : 1. 基 本 操 作 (1 小 题, 计 30 分 ) 在 考 生 文 件 夹 中 存 有 文 件 名 为 Java_1.java 的 文 件, 该 程 序 是 不 完 整 的, 请 在 注 释 行 //**********Found********** 下 一 行 语 句 的 下 划 线 地 方 填 入 正 确 内 容, 然 后 删 除

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

大漠 伪前端, 就职于淘宝

大漠 伪前端, 就职于淘宝 CSS Grid Layout 2016-12-17 @ 大漠. #CSSConf https://www.flickr.com/photos/19139526@n00/8331063530/ 大漠 伪前端, 就职于淘宝 古老的 table 布局 现代 Web 布局 Float inline-block display: table position (absolute 或 relative)

More information

基于JAVA的连连看游戏设计

基于JAVA的连连看游戏设计 基 于 JAVA 的 连 连 看 游 戏 设 计 摘 要 :1978 年 第 一 款 PC 游 戏 冒 险 岛 在 美 国 问 世 至 今, 随 着 硬 件 和 软 件 水 平 的 不 断 进 步, 出 现 许 许 多 多 的 游 戏, 其 中 连 连 看 就 非 常 经 典 连 连 看 -- 在 一 个 画 好 的 格 局 内, 排 列 着 一 些 不 同 的 图 片, 选 中 两 张 一 样 的

More information

Photoshop CS6 艺术设计案例教程 ( 第二版 ) 1.1 Photoshop 的应用领域 Photoshop,,, Photoshop Photoshop 的用途 Photoshop CIS ( ) ( ) 案例展现 ~ 1

Photoshop CS6 艺术设计案例教程 ( 第二版 ) 1.1 Photoshop 的应用领域 Photoshop,,, Photoshop Photoshop 的用途 Photoshop CIS ( ) ( ) 案例展现 ~ 1 Chapter 01 Photoshop CS6 的基本操作 本章内容 1.1 Photoshop 的应用领域 1.6 控制面板的显示与隐藏 1.2 位图和矢量图的特性 1.7 新建 打开与保存文件 1.3 像素和分辨率的关系 1.8 图像的缩放 1.4 色彩模式 1.9 屏幕显示模式 1.5 Photoshop CS6 界面 1.10 计算机图形图像常用的色彩模式 Photoshop CS6 艺术设计案例教程

More information

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

Microsoft Word - Java程序设计全文_终_.doc

Microsoft Word - Java程序设计全文_终_.doc 实训 20 综合开发 2: 文本编辑器 20.1 实训目的 通过采用 Netbeans 重新开发并完善实训 15 中的文本编辑器程序, 训练读者掌握使用 Netbeans 进行 AWT GUI 程序的综合开发技能 20.2 实训案例 下面介绍如何采用 Netbeans 重新开发并完善实训 15 中的文本编辑器程序 通过本实训, 读者能够掌握 : (1)GUI 的菜单设计 (2)GUI 国际化处理 (3)GUI

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

ZW1.PDF

ZW1.PDF C. A. R. Hoare, The Emperor s Old Clothes Java C++ Objective C Eiffel Smalltalk Mesa Lisp Java Java Java C++ Java 10 Item 1 Item 2 String.equals() == 1 1 Item 3 Java C++ Java Item 4 Java Item 5 Java Item

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

Chapter 19 視窗架構 (Frame Structures) 前述各章資料均顯示於 Dos ( 或命令提示字元 ) 視窗, 為了操作方便 本章將引導 圖型介面視窗之設計, 以為爾後各章節結合網路串流資訊 設計更為方便的操作介 面 圖型介面 (Graphic User Interface GU

Chapter 19 視窗架構 (Frame Structures) 前述各章資料均顯示於 Dos ( 或命令提示字元 ) 視窗, 為了操作方便 本章將引導 圖型介面視窗之設計, 以為爾後各章節結合網路串流資訊 設計更為方便的操作介 面 圖型介面 (Graphic User Interface GU PART 4 圖型介面 (GUI) 與網路應用 前 述各章資料均顯示於 Dos ( 或命令提示字元 ) 視窗, 為了操作方便 本章將引導圖型介面視窗之設計, 以為爾後各章節結合網路串流資訊 設計更為方便的操作介面 圖型介面 (Graphic User Interface GUI) 是使用者與系統執行功能之介面, 使用者依照圖型介面視窗的種類與位置 以滑鼠或鍵盤驅動系統功能作執行 Chapter 19

More information

Microsoft Word - 投影片ch20

Microsoft Word - 投影片ch20 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第二十章 AWT 的繪圖 本章學習目標認識 Java 繪圖的基本概念學習設定圖形的顏色與文字的字型學習用滑鼠繪圖的基本程式設計 AWT 的繪圖 20-2 20.1 繪圖概述 20.1.1 座標系統 Java 的座標系統, 原點在視窗的左上角, 向右為 x 軸方向, 向下為 y 軸方向, 如下圖所示 : 原點 x (x,y)

More information

图形学 Project 1 要求 多边形区域填充 ( 算法不限 ) 使用说明 例 1 第一步, 鼠标随意在界面中的画布上点击两次, 则两点间连一条直线 ; 第二步, 画第三个顶点时, 自动连结成为三角形 ; 第三步, 按顺序依次点击, 则按点击顺序形成多边形, 每次多边形变化时, 第一个点和最后

图形学 Project 1 要求 多边形区域填充 ( 算法不限 ) 使用说明 例 1 第一步, 鼠标随意在界面中的画布上点击两次, 则两点间连一条直线 ; 第二步, 画第三个顶点时, 自动连结成为三角形 ; 第三步, 按顺序依次点击, 则按点击顺序形成多边形, 每次多边形变化时, 第一个点和最后 图形学 Project 1 要求 多边形区域填充 ( 算法不限 ) 使用说明 例 1 第一步, 鼠标随意在界面中的画布上点击两次, 则两点间连一条直线 ; 第二步, 画第三个顶点时, 自动连结成为三角形 ; 第三步, 按顺序依次点击, 则按点击顺序形成多边形, 每次多边形变化时, 第一个点和最后 一个点自动连接起来 ; 第四步, 当感觉满意时, 单击 FILL, 则多边形内部就被填充了 例 2 单击

More information

付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探

付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探 付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探索建设中 成时间 : 2017-07-20 12:13:21 Since 8.6 定义键盘 定义键盘使

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

Microsoft Word Java语言程序设计案例教程正文.doc

Microsoft Word Java语言程序设计案例教程正文.doc 第 4 章图形用户界面设计 图形用户界面为用户和程序的友好交互提供了一种机制, 是软件开发的一项非常重要的工作 本章将详细介绍如何使用 Java 语言编写图形界面, 通过引导一步一步创建图形界面程序, 读者不需要深入了解每一步骤的原理, 只要能按照步骤创建程序即可 通过示例程序的学习, 了解创建示例程序的过程, 对图形界面有一个总体的认识 图形用户界面概述 Applet 类 HTML 文件参数传递

More information

E3. 最 大 公 因 數 問 題 描 述 : 寫 一 程 式 求 兩 數 之 最 大 公 因 數 利 用 TextField 元 件 輸 入 正 整 數 M, N (1 N M 9999), 按 下 compute 按 鈕 後 計 算 正 整 數 M, N 的 最 大 公 因 數, 並 顯 示 於

E3. 最 大 公 因 數 問 題 描 述 : 寫 一 程 式 求 兩 數 之 最 大 公 因 數 利 用 TextField 元 件 輸 入 正 整 數 M, N (1 N M 9999), 按 下 compute 按 鈕 後 計 算 正 整 數 M, N 的 最 大 公 因 數, 並 顯 示 於 資 管 系 程 式 設 計 (2) 會 考 題 庫 易 E1. 陣 列 相 加 問 題 描 述 : 請 使 用 TextField 元 件 讓 使 用 者 輸 入 二 個 2x2 的 陣 列 內 容, 當 按 下 +/-/* 按 鈕 後, 接 收 兩 個 陣 列 並 進 行 加 / 減 / 乘 法 運 算, 再 將 其 結 果 顯 示 在 = 後 面 的 TextField 元 件 上 E2. 數

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

Learning Java

Learning Java Java Introduction to Java Programming (Third Edition) Prentice-Hall,Inc. Y.Daniel Liang 2001 Java 2002.2 Java2 2001.10 Java2 Philip Heller & Simon Roberts 1999.4 Java2 2001.3 Java2 21 2002.4 Java UML 2002.10

More information

Microsoft Word - 第13章.doc

Microsoft Word - 第13章.doc 241 Java 从入门到精通 第 13 章 Swing 用户界面设计 AWT 存在缺少剪贴板 打印支持等缺陷, 甚至没有弹出式菜单和滚动窗口等, 因此 Swing 的产生也就成为必然 Swing 是纯 Java 实现的轻量级 (light-weight) 组件, 它不依赖系统的支持 本章主要讨论 Swing 组件基本的使用方法和使用 Swing 组件创建用户界面的初步方法 13.1 Swing 基础

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

untitled

untitled 1 LinkButton LinkButton 連 Button Text Visible Click HyperLink HyperLink 來 立 連 Text ImageUrl ( ) NavigateUrl 連 Target 連 _blank _parent frameset _search _self 連 _top 例 sample2-a1 易 連 private void Page_Load(object

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式] 用户定义类型 User-defined Datatypes classes and structs 几何向量 (Geometry Vector) 二维平面上的向量由起点和终点构成 每个点包含两个坐标 (x, y), 因此一个向量需要四个实数表示 Start= (0.9,1.5) Start= (0.4,0.8) int main() { double xstart = 0.4; double xend

More information

12 计算机应用基础实训与习题指导 (Windows 7+Office 2010) 在任务栏对应的 计算机 窗口按钮上右击, 在弹出的快捷菜单中单击 关闭窗口 选项 在窗口标题栏上右击, 在弹出的快捷菜单中单击 关闭 命令 或鼠标双击窗口标题栏最左边的控制图标 在打开的窗口中, 按 Alt+F4 组

12 计算机应用基础实训与习题指导 (Windows 7+Office 2010) 在任务栏对应的 计算机 窗口按钮上右击, 在弹出的快捷菜单中单击 关闭窗口 选项 在窗口标题栏上右击, 在弹出的快捷菜单中单击 关闭 命令 或鼠标双击窗口标题栏最左边的控制图标 在打开的窗口中, 按 Alt+F4 组 第 2 章 Windows 7 操作系统实训 实训二 Windows 7 基本操作 实训目标 (1) 会进行 Windows 7 的窗口操作 (2) 会进行 Windows 7 应用程序的启动和退出 (3) 会进行桌面背景和屏幕保护程序个性化设置 (4) 通过控制面板的使用, 认识其功能和作用 实训内容 1. 窗口操作 (1) 打开和关闭 计算机 窗口 (2) 调整窗口大小和移动窗口 (3) 切换和排列窗口

More information

Microsoft PowerPoint - ch03

Microsoft PowerPoint - ch03 第三章基礎繪圖 (Basic Graphics) 3 1 簡介 3 2 Graphics Class 3 3 3 直線繪製 3 4 長方形繪製 3 5 橢圓形繪製 3 6 弧線繪製 3 7 多邊形繪製 3 8 圖形剪裁 3 9 圖形複製 3 10 習題 (Exercises) 3 1 簡介 在基礎圖文繪製上, 除了前章所探討的文字繪製之外, 本章將介紹基礎圖形之繪製 類別 Graphics 提供了各類圖形之繪製方法程序,

More information

图形图像处理 (Photoshop CS6) [ pixel ] % % % % dpi/inch dpi 150dpi 300dpi 002

图形图像处理 (Photoshop CS6) [ pixel ] % % % % dpi/inch dpi 150dpi 300dpi 002 第 1 章 初识 Photoshop CS6 本章学习要点 点阵图像的基本概念 常用图像格式的特性 Photoshop CS6 界面基本操作 图像的分辨率和像素 Photoshop 的应用领域 Photoshop 文件的管理 重点和难点 图像的像素和分辨率 Photoshop CS6 界面的基本操作 达成目标 理解像素和分辨率的关系 了解图像的常用格式及特点 掌握 Photoshop CS6 界面基本操作及对图像进行不同格式的保存管理

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

untitled

untitled 1 .NET 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Response 類 Write 料 Redirect URL Response.Write("!! ives!!"); Response.Redirect("WebForm2.aspx"); (1) (2) Web Form

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

untitled

untitled 51testing www.51testing.com UML Java Unified Modeling Language UML 1 UML 2 UML UML UML UML UML UML use case Java 1 2 3 4( 5 6 7 UNIX Windows OS/2 ( GUI ) 8 51testing www.51testing.com use caseactor ()

More information

OOP with Java 通知 Project 3: 4 月 19 日晚 9 点

OOP with Java 通知 Project 3: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 4 月 19 日晚 9 点 复习 Upcasting 同一基类的不同子类可以被视为同一类型 ( 基类 ) 放宽类型一致性 简化接口 class A{ class B{ A a = new A(); B b = new B(); // A a = new B(); compile

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

吉林大学学报 工学版 244 第 4 卷 复杂 鉴于本文篇幅所限 具体公式可详见参考文 献 7 每帧的动力学方程建立及其解算方法如图 3 所示 图4 滚转角速度与输入量 η 随时间的变化波形 Fig 4 Waveform of roll rate and input η with time changing 图5 Fig 5 滚转角随时间的变化波形 Waveform of roll angle with

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information