Component & Container
Container是Component的子类,本身是一种Component。
Component不能独立地显示出来,必须放在Container中。
Container通过Add方法,添加Component,其中包括Container对象。
Window&Panel
Window:顶级窗口,可以直接显示。
panel :容纳其他Component对象,但不能独立显示,必须添加到Window(Frame)中。
创建Frame:new Frame();或者自定义一个类继承 Frame
创建带有Panel的Frame:
Frame f =new Frame("Java Frame with Panel");
Panel p = new Panel(null);
f.add(p);//必须把panel添加到Frame中
使用布局管理器时,由它来管理组件的大小和位置。
如果用户要自行设置,需要将setLayout(null)
当Panel加到Frame中后,Panel仍然可以有自己的布局管理器
应用场景:简而言之,就是一个方法,它被调用的时刻不能确定,需要等待某种情形发生的时候,才会执行。某种情形发生就代表某个事件发生。
原理:
事件源:产生事件的对象,比如单击按钮,按钮就是事件源
事件对象:封装了事件的信息,比如:可以确定你按下的按钮是“确定”按钮,而不是“取消”按钮。
监听器(事件处理器):当事件发生后,调用的方法。
流程:
将监听器注册到事件源对象的监听器列表中,当事件源某种状态变化时,通知监听者,监听者执行自己的处理程序。
常用监听接口:
ActionListener
KeyListener
MouseListener
WindowListener
监听接口&监听适配器
适配器实现了监听接口。
自定义监听器可以实现接口,也可以继承适配器。前者需要实现接口全部方法,后者只须重写自己需要的方法。
监听器和事件源对象之间关系的建立:
内部类
持有对方引用
匿名类