1.java的GUI的所有部件,都是一个构件,构件可以加到构件容器中去,容器也可以加到一个新的容器中去(常见的容器有:JFrame,JPanel,JScrollPane等等)
2.Java的“控制反转机制”:向一个构件中通过AddActionlistener方法注册入一个动作倾听者ActionListener,一旦事件在构件中被检测触发,则ActionListener就反转控制权,程序执行其中的Actionperformed函数。
补充:自定义事件的方法。事件都是在某个事件源产生,实现自定义事件也就是实现事件源。我们定义一个新的类如NewEvent,在这里面我们要定义新的事件,那我们考虑两方面的问题:(1)事件怎样产生?(2)事件怎样传给倾听者?(3)怎样添加倾听者?
(1)事件产生我们可以自己在NewEvent中定义一个触发函数,定义事件触发条件。
(2)事件达到触发条件后,调用类中的listener(类中的listener就是外部通过AddActionListener加入的)的actionPerformed方法,传递一个新的事件ActionEvent,这个actionPerformed方法在外部会被重写(所以这个actionPerformed在listener中应该是一个未被实现的抽象方法吧。。),也就等于又将程序的控制权从事件源交还给了外部程序。
(3)我们很多时候一个事件的倾听者不止一个,我们采用AWYEventMulticaster类的静态方法add,将所有外部传入的倾听者,加入到内部的ActionListener的list中去。
3.ActionListener有两种添加方式:(1)在构件的添加方法的括号里,直接新建匿名类。(2)运用内部类,提前定义好一个实现了ActionListener接口的内部类.
4.JTable的使用:
(1)JTable的类的对象并不存储数据,它们只是数据形式的表现(只显示编辑数据)
(2)Table的数据用其他的东西存储:实现了TableModel接口的类。这个类中由很多需要被实现的接口函数,规定Model中的数据结构。
(3)JTable一般是要被加入到JScrollPane容器中的,这样才能实现滚动条,将Table的内容显示完整。
5.MVC设计模式
M(Model):数据模型,保存维护数据;提供接口让外部修改数据;实时刷新数据给View
V(View):从模型获得数据,根据数据画出表现,呈现给用户
C(Control):从用户得到输入,根据输入调整模型中的数据
(JTable就是可以采用MVC模式来设计表格,只是V和C被合并在了同一个区域,原因很简单:用户的交互本来就是在图形界面上实现的,所以很自然表现和获取输入被集成在了一起)
网友评论