怎样才能保证继承自父类的方法被重写,如JPanel的protected void paintComponent(Graphics g),有可能我们在重写这个方法的时候,不小心把方法名的一个字母打错了,那么这就不是重写了,所幸Java提供了一个非常有用的annotation(注解):@Override,使用时,如果我们所重写的方法名与父类的方法不一致时,就会在编译时不通过,提示错误.
利用关键字instanceof来判断一个对象是不是一个类的对象,当然也可以用Beans.isInstanceOf(Object, Object).
JList的元素都是通过JListl.getModel()的ListModel来进行处理的,而不是直接用JList来处理.
ListModel.getElementAt(index).
返回鼠标所在处的item在JList中的位置:int index = JList.locationToIndex(MouseEvent.getPoint());
然而,最好是用DefaultListModel的对象来作为JList的构造函数的参数,因为JList默认的ListModel功能很少,不能向其中加入删除元素.
DefaultListModel.addElement(), add(), set(), remove(), clear()....
JList还用一SelectionModel
当选择完成后,即鼠标放开后,如多个选择时可能会用到,事件处理JList.addListSelectionListener ---> !e.getValueIsAdjusting()处理.
而当JList的Item变化,即变多或删除时,事件处理是用DefaultListModel.addListDataListener();当变化时,如存储item的数组在其他地方调用处理过了,则在这里更新.