怎樣才能保證繼承自父類的方法被重寫,如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的構造函數(shù)的參數(shù),因為JList默認的ListModel功能很少,不能向其中加入刪除元素.
DefaultListModel.addElement(), add(), set(), remove(), clear()....
JList還用一SelectionModel
當選擇完成后,即鼠標放開后,如多個選擇時可能會用到,事件處理JList.addListSelectionListener ---> !e.getValueIsAdjusting()處理.
而當JList的Item變化,即變多或刪除時,事件處理是用DefaultListModel.addListDataListener();當變化時,如存儲item的數(shù)組在其他地方調用處理過了,則在這里更新.