第六周学习总结
Posted skip_2_my_lou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六周学习总结相关的知识,希望对你有一定的参考价值。
这周学习了用户图形界面编程中的事件驱动编程和Swing中JTree、JTable的运用以及CardLayout布局的使用,并通过一个小项目的练习,锻炼所学知识的综合运用能力。JTable实际是一个二维数组,其行数等于大数组的长度,列数等于大数组所包含的每一个对象小数组的长度,据此来生成表格,JTree的核心是节点,JTree的功能的实现都是围绕着节点来进行的。此前的ATM系统从学习JAVA以来已经做过许多次,而此前都是对单一章节知识的运用,从最早的简单运用循环进行结构化编程,到初学OOP时用面向对象的思想来封装类,再到上周初学GUI时的进行静态界面设计,都仅仅是对某几个章节知识的运用,与实际开发情形有着很大不同,而这次在已有静态界面的基础上,通过事件驱动编程来完成各种功能的实现,极大的锻炼了我们对此前所学知识的综合运用能力,也让我亲身体会到了三层架构的编程思想在实际开发中的好处,也再一次意识到好的编程习惯对于项目开发的重要性。此前所学的知识,有许多过于抽象,在学习时也很难有好的实例供我们运用以达到掌握知识的目的,以静态块为例,在第八章学习时书上仅用很小的篇幅做了简单的介绍,使我们明白了静态块在类加载时先于构造器执行的,并且只执行一次,书上也有对应的例题予以说明,老师特意强调过静态块的作用多是用于比较耗费资源的大量数据的初始化,我们的对静态块的了解也仅仅停留在概念上。但这次ATM界面系统编程中,遇到了大量数据在每一次方法调用时都需要初始化的情况,使得大量重复性的代码出现,为解决这种情况,我想到过用构造方法,把重复代码放在构造方法中用于初始化,这样就可以省去不同方法中都需要出现初始化的代码的情况,但由于数据是可以更改的,而构造方法内的数据是一开始认为确定的,当更改数据后,再调用构造方法所在的类中的方法时,由于每次实例化对象时构造方法都会执行,构造方法内用于初始化的代码会将更新后的数据再次初始化,从而使得更改数据的操作无效,这显然是不符合设计要求的,要解决这个问题,就需要用到静态块,我们可以把初始化的代码放在静态块中,因为静态块只在类第一次加载时执行一次,后续再实例化对象时静态块不会再执行,这样就可以达到一开始对数据初始化,而后续更改也不会数据丢失的目的。通过这种实际运用,使我真正理解了静态块的特点和运用情景。ATM项目中还有一个很大的收获便是对跨类传参的方法的运用,以此项目为例,登录时可以从三个预定的帐号中进行选择,实现登录功能不难,任一帐号只要其用户名和密码都匹配成功时便可,但后续的账户余额查询和存取款功能需要根据登陆时的帐号来确定,登录张三的帐号存取款时却是对李四的账户进行操作,这显然是不合理的,需要实现用户绑定。然而登陆后创建了一个新的界面,和之前的登录界面不在同一类中,需要把登录时所用的用户信息传递给第二个界面,这时可以通过在第二个界面所处类中创建一个User类型的变量,并将第一个窗口登陆时所对应的User赋值给它,便可以实现帐号同步功能。
周四和周五我们学习了I/O的知识,即输入和输出流。对流的读或写就是对程序的输入或输出。之前的ATM项目中的数据虽然是可以更改的,但更改只在程序关闭前有效,因为我们的程序是通过人为设定的,一旦程序关闭再次运行时,类便会再次重新加载,静态块中的用于数据初始化会再次执行,上次运行程序时更改的数据信息在此时会丢失。然而,通过POI的Jar和流的运用包我们可以实现对EXcel表格的数据读取和更改,把之前存在集合中的数据存放在Excel表格中,这样即使Eclipse程序关闭,Excel中的数据并不会丢失,从而保证数据的准确性。在使用POI来获取Excel中的信息时,特别需要注意的是,Excel单元格的值也是有类型之分的,尤其和Numberic和String之分,例如在单元格中输入1,获取到的值会显示1.00,即使在Exce中把该单元格设置为文本类型获取后的结果也一样,因为程序获取Excel单元格信息时会将其认为Numberic型,调用cell.getNumbericCellValue()方法时返回值类型为Double,所以即使你在表格中设置密码为123,登录时必须要用123.00才能匹配成功。然后用cell.getStringCellValu()e方法来获取123时会提示类型不匹配,所以只能用cell.getNumbericCellValue()方法。当单元格确定时,用cell.getNumbericCellValue()方法和cell.getStringCellValue()方法来获取单元格的值时要求类型必须匹配,然后用String.Value of(cell)方法时可以直接把Numberic或者String型的单元格值转化为字符串。
以上是关于第六周学习总结的主要内容,如果未能解决你的问题,请参考以下文章