1 / 98

第 7 章 AWT 组件及事件处理

第 7 章 AWT 组件及事件处理. 主讲:熊曙初 E-mail:xiongshuchu@yahoo.com.cn. 课程导入. 我们在使用管理信息系统、软件工具时,通常是通过人机交互界面来完成相关工作: 如学生选课系统、图书借阅系统设、成绩查询、 WORD 、 VISIO 等软件,都设计有对话框、工具栏、菜单、帮助、窗口、按钮等操作功能提示。 使用专业系统时,一般需要从数据库中获取信息,再通过屏幕显示相关内容。 如在 WORD 中统计文本中有多少个字符、多少单词,查找文章的关键词等;等等。. 利用图形用户(输入 / 输出)界面. 本章主要内容.

oral
Download Presentation

第 7 章 AWT 组件及事件处理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 AWT组件及事件处理 主讲:熊曙初 E-mail:xiongshuchu@yahoo.com.cn

  2. Production and Operations Management 课程导入 • 我们在使用管理信息系统、软件工具时,通常是通过人机交互界面来完成相关工作: • 如学生选课系统、图书借阅系统设、成绩查询、WORD、VISIO等软件,都设计有对话框、工具栏、菜单、帮助、窗口、按钮等操作功能提示。 • 使用专业系统时,一般需要从数据库中获取信息,再通过屏幕显示相关内容。 • 如在WORD中统计文本中有多少个字符、多少单词,查找文章的关键词等;等等。 利用图形用户(输入/输出)界面

  3. Production and Operations Management 本章主要内容 7.10 选择型组件 7.11 Component类的常用方法 7.12 窗口事件 7.13 鼠标事件 7.14 焦点事件 7.15 键盘事件 7.16 使用剪贴板 7.17 打印 7.18 综合实例 7.1 Java窗口 7.2 文本框 7.3 内部类实例做监视器 7.4 按钮与标签 7.5 菜单项 7.6 文本区 7.7 面板 7.8 布局 7.9 画布

  4. Production and Operations Management 重点与难点 • 重点: • 1、 Java窗口及窗口事件 • 2、按钮与标签及其事件 • 3、菜单项 • 4、选择型组件 • 5、文本区 • 6、鼠标事件和键盘事件 • 难点: • 1、 Java窗口及窗口事件 • 2、鼠标事件和键盘事件 • 3、按钮与标签及其事件

  5. Production and Operations Management 0. 图形用户界面基本概念 • 通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进行交互。Java的抽象窗口工具包(AWT:Abstract Window Toolkit)中包含了许多类来支持GUI设计。 • AWT由Java的java.awt包提供,该包中有许多用来设计GUI的组件类 • 如:按钮、菜单、列表、文本框等组件类; • 同时它还包含窗口、面板等容器类。

  6. Production and Operations Management 容器类(Container)和组件类(Component) • Java.awt包中一部分类的层次关系如图所示

  7. Production and Operations Management 案例: • 现有一高校科研管理信息系统,该系统的功能模块如下图所示: 科研管理系统 出版物登记 基本设置 论文登记 项目登记 成果奖励 学术交流登记 申请专利登记 修改个人资料 修改密码 公开发表论文 论文集论文 学术交流论文 项目申请 项目立项 项目结项 内部刊物论文 请为该系统设计一个人机交互的界面。

  8. Production and Operations Management 该系统人机交互界面设计要求: • (1)在系统的最顶行“显示XX科研管理信息系统”; • (2)主界面窗口的大小只有屏幕的一半,且位于屏幕的左上角; • (3)系统的第一级功能模块放在主界面的第一行(顶行); • (4)第二级功能按下拉菜单模式设计; • (5)在进入科研系统之前先进行登录审核,登录窗口只有屏幕的一半大小; • (6)当操作者登录本系统时,要求用户按提示信息相应的输入用户名和密码,且输入密码不公开。 • 请问在Java中应如何设计能满足以上要求?

  9. 要求:(1)在系统的最顶行“显示XX科研管理信息系统”;(2)主界面窗口的大小只有屏幕的一半,且位于屏幕的左上角;要求:(1)在系统的最顶行“显示XX科研管理信息系统”;(2)主界面窗口的大小只有屏幕的一半,且位于屏幕的左上角; • (1)申明引用awt包 • import java.awt.*; • (2)定义一窗体类为Frame的子类 • class FirstWindow extends Frame//定义子类 • (3)定义一个构造方法 • { • FirstWindow(String s) • { • setTitle(s);//在顶行设置名称 • Toolkit tool=getToolkit();//创建一个获取默认工具对象 • Dimension dim=tool.getScreenSize();//获取系统窗口的大小 • setBounds(0,0,dim.width/2,dim.height/2);//窗口定位,布局 • setVisible(true);//窗体是否可见 • } • } 设置窗体的基本属性

  10. 要求(3):系统的第一级功能模块放在主界面的第一行(顶行)要求(3):系统的第一级功能模块放在主界面的第一行(顶行) 定义菜单条,唯一 • 首先在类中进行成员变量申明 • MenuBar menubar; • Menu menu1, menu2, menu3, menu4, menu5, menu6, menu7; 定义菜单 • 其次,在构造方法中创建菜单条、菜单 • menubar=new MenuBar();//创建菜单条 • menu1=new Menu(“基本设置”);//创建菜单,并设置菜单名 • menu2=new Menu("论文登记"); • menu3=new Menu("项目登记"); • menu4=new Menu("成果奖励"); • menu5=new Menu("出版物登记"); • menu6=new Menu("学术交流论文登记"); • menu7=new Menu("申请专利登记"); • menubar.add(menu1);menubar.add(menu2);menubar.add(menu3); • menubar.add(menu4);menubar.add(menu5);menubar.add(menu6); • menubar.add(menu7); • setMenuBar(menubar); 将菜单加入到菜单条中 将菜单加入到窗体中

  11. Production and Operations Management 要求(4):第二级功能按下拉菜单模式设计 定义菜单项,并设置菜单项名称 • 首先定义菜单项 • MenuItemitem11=new MenuItem("修改个人资料"); • MenuItem item12=new MenuItem("修改密码"); • MenuItem item21=new MenuItem("公开发表论文"); • MenuItem item22=new MenuItem("内部刊物论文"); • MenuItem item23=new MenuItem("论文集论文"); • MenuItem item24=new MenuItem("学术交流论文"); • MenuItem item31=new MenuItem("项目申请");item32=new MenuItem("项目立项"); • MenuItem item33=new MenuItem("项目结项");); 菜单项加入到菜单中 • 第二,将菜单项加入 到菜单中,并增加分隔线 • menu1.add(item11);menu1.addSeparator(); • menu1.add(item12); • menu2.add(item21); menu2.addSeparator(); • menu2.add(item22);menu2.add(item23); • menu2.add(item24); • menu3.add(item31);menu3.add(item32);menu3.add(item33); 菜单项之间分隔线

  12. 要求(5):登录窗口只有屏幕的一半大小 • (1)定义一登录窗体类为Frame的子类 • class LoginWindow extends Frame//定义子类 • (2)定义一个构造方法 • { • LoginWindow(String s) • { • setTitle(s);//在顶行设置名称 • Toolkit tool=getToolkit();//创建一个获取默认工具对象 • Dimension dim=tool.getScreenSize();//获取系统窗口的大小 • setBounds(0,0,dim.width/2,dim.height/2);//窗口定位,布局 • setVisible(true); • } • }

  13. Production and Operations Management 要求(6):当操作者登录本系统时,要求用户按提示信息相应的输入用户名和密码,且输入密码不公开。 • (1)首先在窗体类中进行成员变量申明 • 提示信息、输入信息: • 提示信息: • Label username,userpower;//提示用户名、密码 • 输入信息: • TextField userna,userpow;//输入用户名、密码 • (2)在构造方法中创建标签和文本框 • Username=new Lable(“用户名”); • Userpower=new Lable(“密 码”); • Userna=new TextField(10); • Userpow=new TextField(10); • Userpow.setEchoChar(‘*’);//设置不为可见字符 提示信息用标签 Lable 用户输入信息用文本框,TextField 创建提示信息用标签、输入文本框 设置广西框中输入信息不可见,”*”

  14. Production and Operations Management 要求(6)-2:输入用户名和密码,且输入密码不公开。 • (1)首先在类中进行成员变量申明 • (2)在构造方法中创建标签和文本框 • (3)布局设置 • FlowLayout flow=new FlowLayout(); • flow.setAlignment(FlowLayout.LEFT);//对齐方式 • flow.setHgap(10);//设置水平间距 • flow.setVgap(10);//设置垂直间距 • setLayout(flow); • add(username);add(userna); • add(userpower);add(userpow); • setBounds(100,100,150,120); • setVisible(true); 创建一个布局对象 对布局对象进行设置 将提示标签、文本框加入到窗体对象中

  15. 7.1 Java窗口 • Frame类是Container类的间接子类。当需要一个窗口时,可使用Frame或其子类创建一个对象。窗口也是一个容器,可以向窗口添加组件。需要注意的是,窗口默认地被系统添加到显示器屏幕上,因此, • 不允许将一个窗口添加到另一个容器中。

  16. 1. Frame常用方法 • 1.Frame() 该构造方法可以创建一个无标题的窗口,窗口的默认布局为BorderLayout布局。 • 2.Frame(String s) 该构造方法可以创建一个标题为s的窗口,窗口的默认布局为BorderLayout布局。 • 3.public void setBounds(int a,int b,int width,int height) 窗口调用该方法可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。 • 4.public void setSize(int width,int height) 设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。 • 5.public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认是不可见的。 • 6.public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认是可调整大小的。 默认,东西南北中

  17. 2.菜单条、菜单、菜单项 • java.awt包中的Menubar类是负责创建菜单条的,即Menubar的一个实例就是一个菜单条。Frame类有一个将菜单条放置到窗口中的方法:setMenuBar(MenuBar bar); • java.awt包中的Menu类是负责创建菜单的,即Menu的一个实例就是一个菜单 • java.awt包的MunuItem类负责创建菜单项,即MenuItem的一个实例就是一个菜单项 .P130 7.1

  18. Production and Operations Management • 在设计菜单时,应注意的几个技巧: • (1)增加菜单项分隔线 • addSeparator()方法; • (2)复选择框菜单 • CheckboxMenuItem(); • (3)嵌入子菜单 • (4)菜单条、菜单、菜单项加入窗体的顺序关系。 • 例7-11 菜单条唯一,菜单和菜单项多个,且菜单可以包含子菜单

  19. Production and Operations Management 7.3 文本框 • java.awt包中的类TextField类创建文本框. • 用户可以在文本框输入单行的文本。

  20. Production and Operations Management 1.TextField类的主要方法 • TextField(int x)如果使用这个构造方法创建文本框对象,文本框中的可见字符序列的长度为 x个机器字符长。文本框是可编辑的,用户可以在文本框中输入若干个字符。 • TextField(String s )如果使用这个构造方法创建文本框对象,则文本框的初始字符串为s。文本框是可编辑的,可以在文本框中输入若干个字符。 • public void setText(String s) 文本框对象调用该方法可以设置文本框中的文本为参数s指定的文本,文本框中先前的文本将被清除。 • public String getText() 文本框对象调用该方法可以获取文本框中的文本。 • public void addActionListener(ActionListener E)文本框对象调用该方法可以向文本框增加动作监视器(将监视器注册到文本框)。P132 7.2

  21. Production and Operations Management 2.文本框上的ActionEvent事件 • 学习组件除了了解组件的属性和功能外,一个更重要的方面是学习怎样处理组件上发生的界面事件。 • 在学习处理事件时,必须很好地掌握事件源、监视器、处理事件的接口这三个概念。 • 通过处理文本框这个具体的组件上的事件,来掌握处理事件的基本原理。

  22. Production and Operations Management Java的事件处理模式 • 事件源 能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表、键盘等。也就是说,事件源必须是一个对象,而且这个对象必须是Java认为能够发生事件的对象。 • 监视器 需要一个对象对事件源进行监视,以便对发生的事件作出处理。事件源通过调用相应的方法将某个对象作为自己的监视器。例如,对于文本框,这个方法是: addActionListener(监视器); 创建该监视器对象的类必须声明实现相应的接口 • 处理事件的接口在文本框获得输入焦点之后,如果用户按回键,Java运行系统就自动用ActionEvent类创建了一个对象,即发生了ActionEvent事件 .当事件源发生事件时,监视器就自动调用执行被类实现的某个接口方法 .P134 7.3 • 文本框中接口事件的方法: • actionPerformed(ActionEvent e);

  23. 处理事件示意图

  24. Production and Operations Management • 例:请设计一个简单的中、英文单词翻译器。 • 分析翻译器的基本要求: • 输入英文单词,立即得出中文; • 输入中文,立即得到英文。 • 设计思路: • 在一个窗体中,应有3个文本框, • 第一个作为输入英文,按回车表示单词输入结束; • 第二个文本框输入中文,按回车表示输入结束; • 第三个文本框作为输出结果。 • 对第一、二个文本框作为事件源,需要进行监视。 • 根据事件源,从文本框中提取信息; • 从“词典”中匹配单词信息,确定单词内容; • 将匹配的单词在第三个文本中显示出来。

  25. Production and Operations Management 声明引用事件监视包 • import java.awt.*; • import java.awt.event.*; • class MyWindow extends Frame implements ActionListener • { TextField text1,text2,text3; • MyWindow(String s) • { setTitle(s); • setLayout(new FlowLayout()); • text1=new TextField(10); • text2=new TextField(10); • text3=new TextField(20); • add(text1); • add(text2); • add(text3); • text1.addActionListener(this); • text2.addActionListener(this); • setBounds(100,100,200,200); • setVisible(true); • validate();//确保组件的有效性 • } 文本框事件监视实现接口,必须的 文本框加入到窗体的布局策略 文本框加入到窗体中 对文本框进行监视

  26. 文本框事件监视实现方法 Production and Operations Management 判断事件源 • public void actionPerformed(ActionEvent e) • { if(e.getSource()==text1) • { String word=text1.getText(); • if(word.equals("boy")) • { text3.setText(“男孩”);//显示翻译后的单词 • } • else if (word.equals("girl")) • { text3.setText("女孩"); • } • else if (word.equals("sun")) • { text3.setText("太阳"); • } • else • { text3.setText("没有该单词"); • } • } 比较字符串是否相等 获取文本框中的信息 设置文本框中的信息

  27. Production and Operations Management • else if(e.getSource()==text2) • { String word=text2.getText(); • if(word.equals("男孩")) • { text3.setText("boy"); • } • else if (word.equals("女孩")) • { text3.setText("girl"); • } • else if (word.equals("太阳")) • { text3.setText("sun"); • } • else • { text3.setText("没有该单词"); • } • } • } • }

  28. Production and Operations Management 增加对窗体的关闭以及大小是否可调功能 • addWindowListener(new WindowAdapter() • {public void windowClosing(WindowEvent E) • {System.exit(0);} • });//增加窗体适配器 • setResizable(false);//设置窗体为不可修改

  29. Production and Operations Management • 窗口事件常用的方法: • P175页 • windowActivated()//窗口激活状态 • windowDeactivaed()//窗口非激活状态 • windowClosing()//正在关闭窗口 • windowClosed()//已关闭窗口 • windowIconified()//窗口图标化 • windowDeiconifed()//窗口撤销图标化 • windowOpened()//打开窗口 • 另外,窗口还有两个方法:exit()、dispose()

  30. Production and Operations Management • 猜数字小游戏设计: • 要求: • 从计算机中获得随机数,你猜测一个数,如果两数相等时,提示猜对了;如果你猜的数大于随机数,则提示猜大了;如果小于随机数,则提示猜小了。同时,当点击窗口中“关闭”按钮或“退出”时,退出小游戏。 • 如何设计?

  31. Production and Operations Management • 分析: • (1)获取一个随机,可以用一个按钮键,并对些按钮进行监视; • (2)猜测数通过一个文本框,在文本框中输入一个数字字符,在数字确认后,通过一个按钮以确定文本中输入了数字字符,然后从文本框中取出数字字符并转换成数值。对确认按钮进行监视; • (3)猜测数与随机数进行比较,将比较的结果在一个文本框或标签中显示出来; • (4)如果输入的是非数字,需要清空并重新输入。 • (5)当单击“关闭”或“退出”时,小游戏将退出。

  32. Production and Operations Management • 首先,建立一个窗体类,包含二个按钮,一个文本框,一个标签 • import java.awt.*; • import java.awt.event.*; • class WindowButton extends Frame implements ActionListener//对按钮进行监视 • { Label label1; • TextField inputer; • Button buttonGetNumber,buttonEnter; //获取随机数、猜测数按钮 • Button butexit; • WindowButton(String s) //构造方法 • { super(s); • setLayout(new FlowLayout()); • buttonGetNumber=new Button(“得到一个随机数”);//创建随机数按钮 • label1=new Label("输入你的猜测:",Label.CENTER); • inputer=new TextField(“",10); • add(buttonGetNumber); • add(label1);label1.setBackground(Color.cyan); • add(inputer);

  33. Production and Operations Management • buttonEnter=new Button(“确定”); //创建获取文本框中的数字按钮 • add(buttonEnter); • butexit=new Button(“退出游戏”); • add(butexit); • buttonEnter.addActionListener(this);// • buttonGetNumber.addActionListener(this); • addWindowListener(new WindowAdapter() • {public void windowClosed(WindowEvent E) • {setVisible(false); System.exit(0);} • });//增加对窗体的关闭功能 • setBounds(100,100,150,150); • setVisible(true); • validate(); • }

  34. public void actionPerformed(ActionEvent e) //事件监视接口 • { if(e.getSource()==buttonGetNumber)//随机数按钮接口 • { number=(int)(Math.random()*100)+1; • label1.setText(“输入你的猜测:”);//提示信息 • } • else if(e.getSource()==buttonEnter)//猜数按钮 • { int guess=0; • try { guess=Integer.parseInt(inputer.getText());//获取文本框中的字符、并进行数字的判断 • if(guess==number) • { label1.setText("猜对了!"); • } • else if(guess>number) • { label1.setText("猜大了!"); • inputer.setText(null); • } • else if(guess<number) • { label1.setText("猜小了!"); • inputer.setText(null); • } • } • catch(NumberFormatException event) • { label1.setText("请输入数字字符"); • }

  35. Production and Operations Management • if(e.getSource()==butexit)//退出游戏按钮接口 • {System.exit(0);}

  36. Production and Operations Management 主程序 • public class Example7_6 • { public static void main(String args[]) • { WindowButton win=new WindowButton(“简单游戏"); • } • }

  37. Production and Operations Management 7.4按钮与标签 • 标签的功能是只显示文本,不能动态地编辑文本。Lalel类的实例就是一个标签. • Java.awt包中的Button类是专门用来建立按钮的。即Button类创建的一个对象就是一个按钮。 • 按钮可以发生ActionEvent事件,当按钮获得监视器之后,用鼠标单击按钮,就发生ActionEven事件. P141 7.6

  38. Production and Operations Management 7.5菜单项 • 单击某个菜单项可以发生ActionEvent事件,因此,我们可以通过处理ActionEvent事件实现我们想要进行的操作。 • 可以使用MenuShotcut类为菜单项设置快捷键,该类的一个构造方法是: MenuShotcut (int key); 其中key可以取值:KeyEvent.VK_A~ KeyEvent.VK_Z; • 菜单项使用setShortcut(MenuShortcut k)方法来设置快捷键。 P188页表7-1。

  39. 例:现有一高校科研管理信息系统,该系统的功能模块如下图所示:例:现有一高校科研管理信息系统,该系统的功能模块如下图所示: 科研管理系统 基本设置 项目登记 出版物登记 论文登记 成果奖励 学术交流登记 申请专利登记 退出系统 修改个人资料 修改密码 我的基本信息 我的详细信息 项目申请 项目立项 项目结项 公开发表论文 论文集论文 学术交流论文 内部刊物论文 修改基本信息 登录注册 (1)请为该系统设计一个人机交互的界面,并将退出系统用快捷键(ctrl+E)的方式退出系统。 (2)当点击登录注册时,系统调用登录窗口。

  40. Production and Operations Management • (1)首先申明引用awt包及事件监视 • import java.awt.*; import java.awt.event.*; • (2)定义一窗体类为Frame的子类 • class FirstWindow extends Frame implements ActionListen//定义子类及事件监视接口 • (3)定义成员变量 • MenuBar menubar;//定义菜单条,唯一 • Menu menu1, menu2, menu3, menu4, menu5, menu6, menu7;//定义菜单 • MenuItem item11,item12,item13; • MenuItem item21,item22,item23,item24; • MenuItem item31,item32,item33; • Menu menu1_1;//二线菜单,嵌套 • Menu menu1_2; • MenuItem item11_1,item11_2; • MenuItem item12_1,item12_2;

  41. Production and Operations Management • (4)定义一个构造方法 • { • FirstWindow(String s) • { • setTitle(s);//在顶行设置名称 • Toolkit tool=getToolkit();//创建一个获取默认工具对象 • Dimension dim=tool.getScreenSize();//获取系统窗口的大小 • setBounds(0,0,dim.width,dim.height/2);//窗口定位,布局 • setVisible(true); • 在构造方法中创建菜单条、菜单、菜单项等 • menubar=new MenuBar(); • menu1=new Menu("基本设置"); • menu1_1=new Menu("我的基本信息"); • menu1_2=new Menu("我的详细信息"); • menu2=new Menu("论文登记"); • menu3=new Menu("项目登记"); • menu4=new Menu("成果奖励"); • menu5=new Menu("出版物登记"); • menu6=new Menu("学术交流论文登记"); • menu7=new Menu("申请专利登记"); • item11=new MenuItem("修改个人资料"); • item12=new MenuItem("修改密码"); • item13=new MenuItem("退出系统(exit)");

  42. Production and Operations Management • item13.setShortcut(new MenuShortcut(KeyEvent.VK_E));//对菜单项进行快捷键设置 • item11_1=new MenuItem("修改基本信息"); • item11_2=new MenuItem(“登录注册"); • item12_1=new MenuItem("增加信息"); • item12_2=new MenuItem("查看基本信息"); • menu1.addSeparator(); • item21=new MenuItem("公开发表论文"); • item22=new MenuItem("内部刊物论文"); • item23=new MenuItem("论文集论文");item24=new MenuItem("学术交流论文"); • item31=new MenuItem("项目申请");item32=new MenuItem("项目立项"); • item33=new MenuItem("项目结项");

  43. Production and Operations Management • 将菜单、菜单条、菜单项加入到窗体中 • menu1_1.add(item11_1); menu1_1.add(item11_2); • menu1_2.add(item12_1); menu1_2.add(item12_2); • menu1.add(menu1_1); menu1.add(menu1_2); • menu1.add(item11);//menu1.addSeparator(); • menu1.add(item12); • menu1.add(item13); • menu2.add(item21);//menu2.addSeparator(); • menu2.add(item22);menu2.add(item23); • menu2.add(item24); • menu3.add(item31);menu3.add(item32);menu3.add(item33); • menubar.add(menu1);menubar.add(menu2);menubar.add(menu3); • menubar.add(menu4);menubar.add(menu5);menubar.add(menu6); • menubar.add(menu7);

  44. Production and Operations Management • 对菜单项进行监视设置 • item11_2.addActionListener(this);//登录注册监视 • item13.addActionListener(this);//对菜单项进行监视 • addWindowListener(new WindowAdapter() • {public void windowClosing(WindowEvent E) • {System.exit(0);} • });//对窗口进行监视 • setMenuBar(menubar); • setVisible(true); • }

  45. Production and Operations Management • (5)监视接口方法 • public void actionPerformed(ActionEvent e) • { • if(e.getSource()==item11_2)//监视事件接口,调用登录窗口 • {LoginWindow mywin=new LoginWindow(“登录注册窗体”);//创建登录注册窗口 • mywin.setVisible(true); • } • else if(e.getSource()==item13) • {System.exit(0);} //监视事件接口,退出系统 • } • }

  46. Production and Operations Management • (6)定义内部窗体,登录注册 • class LoginWindow extends Frame implements ActionListene//内部窗体类 • { • Label username;Label userpower;//用户名、密码标签 • TextField userna,userpow;//用户名、密码文本框 • LoginWindow(String s) • { • setTitle(s); • Toolkit tool=getToolkit(); • Dimension dim=tool.getScreenSize(); • setBounds(100,100,dim.width/2,dim.height/2); • username=new Label("用户名"); • userpower=new Label("密 码"); • userna=new TextField(20); • userpow=new TextField(20); • userpow.setEchoChar('*');//设置不为可见字符 • FlowLayout flow=new FlowLayout(); • flow.setAlignment(FlowLayout.LEFT); • setLayout(flow); • add(username);add(userna); • add(userpower);add(userpow);

  47. Production and Operations Management • (7)对登录窗口进行监视 • addWindowListener(new WindowAdapter() • {public void windowClosing(WindowEvent E) • {dispose();} • });//对窗口进行监视,单击关闭时,退出登录窗口,返回到主界面。 • public void actionPerformed(ActionEvent e)//登录窗体接口 • {dispose(); }

  48. Production and Operations Management 7.6文本区 • java.awt包中的类TextArea类是专门用来建立文本区的,即TextArea创建的一个对象称做一个文本区。用户可以在文本区输入多行的文本。

  49. Production and Operations Management 1. TextArea类主要方法 • TextArea(int x,int y)使用这个构造方法创建文本区对象,文本框可见行数和列数数分别为x和y。文本区有水平和垂直滚动条。 • public void setText(String s) 文本区对象调用该方法可以将文本区中的文本设置为参数s指定的文本,文本区中先前的文本将被清除。 • public String getText() 文本区对象调用该方法可以获取文本区中的文本。 • public void append(String s) 文本区对象调用该方法可以在文本区中尾加文本 . • addTextListener(TextListener) 文本区对象调用该方法可以向文本框增加文本监视器。

  50. Production and Operations Management 2.文本区上的TextEvent事件 • 对于文本区事件源,可以发生TextEvent事件。当文本区获得监视器之后,在文本区域中改变文本的内容,如键入字符、删除字符时,TextEvent类将自动创建一个事件对象。 • 发生TextEvent事件的事件源获得监视器的方法是addTextListener(监视器);, 由于文本区可以发生TextEvent事件,所以TextArea类提供了addTextListener方法。 • 处理发生TextEvent 事件的接口是TextListener,该接口中只有一个的方法: textValueChanged (TextEvent e) • 创建文本区监视器的类必须要实现TextListener接口。当文本区发生TextEvent事件时,监视器将自动调用方法: textValueChanged (TextEvent e) 对发生的事件作出处理。 P146 Example 7.9

More Related