精华全集 冲广角币 获取广角币的更多方法
【名称】:由一个简单的程序谈起――之二
【作者】:江苏 无锡 缪小东
【格式】:PDF
【页数】:4
【语言】:中文
【出版社】:
【出版日期】:
【摘要或目录】:
下面就是关于这个程序的一些建议了!肯定不完整,希望大家补上! 第一、 肯定选择中文做对象名是不太合适的! 一般不太会使用中文做变量名(虽然Java支持Unicode,可以这么做!)。在界面上使用中文是在所难免的!不过不是通过硬编码的方式,可以使用Properties和Local两个类组合,控制界面上的说明性文字! 第二、 这个程序里有些做法还是不错的!例如:程序中的很多Label对象放在构造方法的内部,根本就没有放入成员变量中。例如:box2.add(new JLabel("姓名:",JLabel.CENTER)); 一般必须限制它们到最小的范围中,就是说其它方法没有使用到的,只在某个方法中出现的变量,可以完全放到该方法中。这样做是为了限制对象的生命周期,同时为了程序的清晰!JTextField、JRadioButton都必须作为类的属性、而ButtonGroup是很不应该作为类的属性的!为什么?自己考虑吧! 第三、 基本信息表=(Hashtable)inTwo.readObject(); 一次将所有的学生记录全部读出,好像不太好!假如你数据库比较大――学生记录比较多!IO肯定会阻塞,同时因为它的操作放在GUI的事件中,理所当然还导致GUI冻结――当进行该事件处理时,GUI上所有的部件都是不可以操作的,就像冻结了一样!对于这种情况可以将该事件操作放于一个线程中!具体可以研究《Java Thread Programming》吧! 第四、 事件处理方法中好几个对象都有setEditable(false); 方法,这些方法都是在同一个逻辑下的操作,因此可以将其放入一个统一的方法中,如: public void setEditable(){ name.setEditable(false); //姓名.setEditable(false); ….. } 这种改法,在本程序中可能不算很好,业务逻辑表明:所有的JTextField被设置为不可编辑!在Swing中主要的模式就是组合模式,我们可以利用 JPanel.getComponents()方法得到所有的Component数组,然后查看其是不是JTextField,是就setEditable(false)。其它如清空所有的项就可以是clear方法了!初始化界面也尽量放到一个iniGUI方法中好了!总之尽量将同一逻辑,相同的方法组织到一起! 第五、 其它还有下面这些关于文件的操作其实也不应该放到类的属性的!(我们会选择一些其它方法!)为什么让客户看到你写入文件呢! FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null;
[hide][/hide]