201711671229 《Java程序设计》第九周学习总结(后补)

在第九周的学习中,学习了第八章节后续的事件处理

对书本上的知识点总结:

一,后续的时间处理及GUI组件

1,焦点事件:组件可以通过addFocusListener(FocusListener listener)注册焦点事件监视器;创建监视器的类必须实现FocusListener接口的两个方法:

public void focusGained(FocusEvent e); //当组件从无输入焦点变成有输入焦点触发该事件

public void focusLost(FocusEvent e); //当组件从有输入焦点变成无输入焦点触发该事件

用户单击组件可以使该组件有输入焦点,同时也使得其他组件变成无输入焦点;

public boolean requestFocusInWindow(); //该方法可以获得输入焦点。

 

2,键盘事件:按下,释放或敲击键盘上一个键时就触发了键盘事件,使用addKeyListener(KeyListener listener)方法注册监视器;使用KeyListener接口处理键盘事件,该接口包括三个如下方法:

public void KeyPressed(KeyEvent e); //用户按下键盘上的某个键时,监视器调用该方法

public void KeyTyped(KeyEvent e); //当键被按下又被释放时,监视器调用该方法

public void KeyReleased(KeyEvent e); //用户释放键盘上按下的键时,监视器调用该方法

public int getKeyCode(); //该方法可以判断哪个键被按下,敲击或释放;

 

3,窗口事件:凡是Window子类创建的对象都可以发生WindowEvent事件;当一个窗口被激活,打开,关闭,图标化或撤销图标化时,触发窗口事件窗口使用addWindowListener(WindowListener listener)方法获得监视器;创建监视器对象类必须实现的的的WindowListener接口,该接口有7个不同的方法:

--- public void windowActivated(WindowEvenr e); //当窗口从非激活状态到激活状态时,窗口监视器调用该方法

--- public void windowDeactivated(WindowEvent e); //当窗口从激活状态到非激活状态时,窗口监视器调用该方法

--- public void windowClosing(WindowEvent e); //当窗口正在被关闭时,窗口的监视器调用该方法

--- public void windowClosed(WindowEvent e); //当窗口关闭后,窗口的监视器调用该方法

--- public void winndowIconified(WindowEvent e); //当窗口图标化时,窗口的监视器调用该方法

--- public void windowDeiconefied(WindowEvent e); //当窗口撤销图标化时,窗口的监视器调用该方法

--- public void windowOpened(WindowEvent e); //当窗口打开时,窗口的监视器调用该方法

注:当单击窗口右上角的关闭图标时,监视器首先调用的的windowClosing方法,如果在方法中使用System.exit(0);退出程序的运行,那么监视器也没有机会再调用的的windowClosed方法。

WindowAdapter的的的适配器:当Java的的的提供处理事件的接口多于一个方法时,爪哇的相应的提供一个适配器,比如WindowAdapter的的的类实现了WindowListener的的的接口,因此可以使用WindowAdapter的的的的子类创建的对象做监视器,在子类中重写所需要的接口的方法即可。

 

4,匿名类实例或窗口做监视器:

(1)匿名类的实例做监视器:当事件的处理比较简单,系统也不复杂时,使用匿名类或内部类做监视器是一个不错的选择;

(2)窗口做监视器:当事件的处理比较简单,系统也不复杂时,让窗口作为监视器是一个不错的选择;让组件所在的窗口作为监视器,能让事件的处理比较方便。

 

5,事件总结:

----授权模式:Java的的的的事件处理是基于授权模式,即事件源调用方法将某个对象注册为自己的监视器;

---- J接口回调:ava语言使用接口回调技术实现处理事件的过程,用addXXXListener(XXXListener listener)方法将某个对象注册为自己的监控器,方法中的参数是一个接口,listener可以引用任何实现了该接口的类所创建的对象,当事件源发生事件时,接口听众立刻回调被类实现的接口中的某个方法。

----方法绑定:Java的的的运行系统要求监视器必须绑定某些方法来处理事件,即将某种事件的处理绑定到对应的接口,也就是说,当事件源触发事件发生后,监视器准确知道去调用哪个方法(自动去调用)。

----保持松耦合:监视器和事件源应当保持一种松耦合关系,尽量让事件源所在的类和监视器是组合关系;当事件源触发事件发生后,系统知道某个方法会被执行,但无须关心到底是哪个对象去调用了这个方法。

 

6,MVC结构:模型 - 视图 - 控制器(模型 - 视图 - 控制器),简称MVC; MVC首先出现在Smalltalk中的中编程语言中。

MVC是一种通过3个不同部分构造一个软件或组件的理想方法:

- 模型用于存储数据的对象

- 视图为模型提供数据显示的对象

- 控制器处理用户的交互操作,对于用户的操作做出响应,让模型和视图进行必要的交互,即通过

视图修改,获取模型中的数据;当模型中的数据变化时,让视图更新显示。

在面向对象的角度看:可以将某个对象看作“模型”,然后为“模型”提供恰当的组件,即“视图”,为了对用户的操作做出响应,可以选择某个组件做“控制“,当触发事件时,通过'视图'修改或得到'模型'中维护着的数据,并让'视图'更新显示。

如图7所示,对话框:如果一个有模式的对话框处于激活状态,则将堵塞其他线程的执行,此时用户不能再激活对话框所在程序的其他窗口直至该对话框消失不见;如果一个无模式的对话框处于激活状态,能再激活其他窗口,也不阻塞其他线程的执行。

注:进行一个重要的操作动作之前,通过弹出一个有模式的对话框表明操作的重要性。

(1)消息对话框:有模式对话框;

public static void showMessageDialog(Component parentComponenet,//指定对话框可见时的位置
                                        String message,//指定对话框上显示的消息
                                        String title,//知道对话框的标题
                                        int messageType)  //取值是JOptionPane中的类常量:
//INFORMATION_MESSAGE;WARNING_MESSAGE;ERROR_MESSAGE;QUESTION_MESSAGE;PLAIN_MESSAGE

取值JOptionPane.WARNING_MESSAGE时,对话框的外观上会有明显的符号“!”;

(2)输入对话框:该对话框含有汞用户输入文本的文本框,一个确认和取消按钮,是有模式的对话框。

public static void main(Component parentComponent,//指定输入对话框所依赖的组件
                            Object message,//指定对话框上的提示信息
                            String title,//指定对话框上的标题
                            int messageType)//可取的JOptionPane中的类常量与消息对话框的相同

单击输入对话框上的确定按钮,取消按钮或关闭图标,都可以使输入对话框消失不可见;如果单击的是确认按钮,输入对话框返回用户在对话框的文本中输入的字符串,否则返回NULL。

(3)确认对话框:有模式的对话框,的JOptionPane的类的静态方法:

public static int showConfirmDialog(Component parentComponent,Object message,String title,int optionType)

optionType可取的有效值是的的JOptionPane中的类常量:YES_NO_OPTION,YES_NO_CANCEL_OPTION,OK_CANCEL_OPTION

在取值JOptionPane.YES_NO_OPTION时,确认对话框的外观上会有是和否两个按钮,当确认对话框消失后,showConfirmDialog的的方法会返回下列整数值之一:JOptionPane.YES_OPTION,JOptionPane.NO_OPTION,JOptionPane的的.CANCEL_OPTION,JOptionPane.OK_OPTION,JOptionPane.CLOSED_OPTION。返回的具体值依赖用户所单击的对话框上的按钮和对话框上的关闭图标。

(4)颜色对话框:有模式的对话框; javax.swing中的中包中的供JColorChooser的类的静态方法:

public static Color showDialog(Component component,//参数指定的组件的正前方显示,如果component为null,颜色对话框在屏幕的正前方显示
String title,
Color initalColor)//指定颜色对话框返回的初始颜色

(5)自定义对话框:与创建窗口类似,通过建立的的JDialog的子类来建立一个对话框类,然后这个类的一个实例就是对话框,对话框是一个容器,默认布局为BorderLayout的的,对话框可以添加组件,实现与用户的交互操作。

的JDialog()构造一个无标题的初始不可见的对话框,对话框依赖一个默认的不可见窗口,该窗口由爪哇运行环境提供;

的JDialog(JFrame的所有者)构造一个无标题的初始不可见的无模式的对话框,所有者取对空,对话框依赖一个默认的不可见窗口,该窗口由爪哇运行环境提供;

 

7,树组件与表格组件:

(1)树组件:JTree的的类的对象称为树组件,也是常用组件之一;

--DefaultMutableTreeNode结点:任何实现MutableTreeNode接口的类创建的对象都可以成为树上的结点;

DefaultMutableTreeNode类两个常用的构造方法是:

DefaultMutableTreeNode(Object userObject)
DefaultMutableTreeNode(Object userObject,boolean allowChildren)

- 树上的TreeSelectionEvent事件:使用addTreeSelectionListener(TreeSelectionListener listener)方法获得一个监视器

(2)表格组件:以行和列的形式显示数据,允许对表格中的数据进行编辑表格的模型功能强大,灵活并易于执行由于表格是最复杂的组件,我们目前只介绍默认的表格模型。

JTable中有7个构造方法,此处介绍三个:JTable的()创建默认的表格模型; JTable(int a,int b)创建行,b列的默认模型表格; JTable(Obkect data [] [],Object columnName [])创建默认表格模型对象,并且显示由data指定的二维数组的值,其列名由数组columnName指定。

当表格需要刷新时,让表格调用重绘方法。

 

如图8所示,按钮绑定到键盘:用户直接敲击某个键代替用鼠标单击巨头按钮所产生的效果。

--- AbstractAction类与特殊的监视器:要求创建监视器的类必须实现的ActionListener接口的子接口动作;如果按钮通过addActionListener方法,()方法注册的监视器和程序为按钮的键盘操作指定的监视器是同一个监视器,那么久可以代替用鼠标单击该按钮所产生的效果;

编写AbstractAction类的子类时,只要重写public void actionPerform(ActionEvent e)方法即可;

---指定监视器的步骤:获取输入映射,绑定按钮的键盘操作,为按钮的键盘操作指定监视器;

---注意事项:为按钮的键盘操作指定的监视器和按钮本身是有addActionLister方法注册的监视器可以不是相同的一个,甚至按钮可以不使用addActionLister方法注册任何监视器比如,如果想刚如敲击键盘就移动按钮,可以不为按钮注册监视器,即删除程序中的

button.addActionListener(listener)

那么,程序用鼠标单击按钮不能移动按钮。

 

9,打印组件:应用程序可以使用的PrintJob对象完成打印组件的工作,步骤如下:

(1)获取工具包对象:让组件调用的的getToolkit()方法返回系统提供的工具包对象

(2)获得的PrintJob的对象:工具包对象调用getPrintJob()方法返回一个的PrintJob的对象

(3)获取的图形对象:PrintJob的的对象使用的的getGraphics()方法获得一个图形对象

(4)打印组件:假设步骤3获得的图形对象为克,那么组件调用方法paintAll(G)将打印出该组件及其子组件;涂料(克)打印该组件本身;的形状,不打印组件上的其他信息。

 

10,发布GUI程序:可以使用jar.exe的的把一些文件压缩成一个JAR文件,来发布我们的应用程序。

生成一个JAR文件的步骤如下:

- 首先用文本编辑器编写一个清单文件,扩展名为即.mf,如Mymoon.mf;

- 接着是生成JAR文件,如果目录测试下的字节码文件刚好是应用程序需要的全部字节码文件,也可以如下生成JAR文件:

D:\ test \ jarcfm Tom.jar Mymoon.mf * .class

可以将Tom.jar文件复制到任何一个安装了Java的的运行环境的计算机上,只要用鼠标双击该文件结可以运行该的Java的应用程序了。

 

感悟

迟来的总结,个人认为本周的内容是开发的最核心内容了,GUI界面交互应用广泛,同时学习的难度也不低,出现了不少新的概念(如:布局,MVC,对话框,罐),这不是一时半会就能够掌握的,需要通过编程的积累,才能熟练运用本周的内容。

学习进度条

 代码行数(新增/累计)博客量(新增/累计)学习时间(新增/累计)
目标5000行30篇400个小时(24000分钟)
第九周632/19341/8421/2164

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值