怎樣才能保證繼承自父類的方法被重寫,如JPanel的protected void paintComponent(Graphics g),有可能我們?cè)谥貙戇@個(gè)方法的時(shí)候,不小心把方法名的一個(gè)字母打錯(cuò)了,那么這就不是重寫了,所幸Java提供了一個(gè)非常有用的annotation(注解):@Override,使用時(shí),如果我們所重寫的方法名與父類的方法不一致時(shí),就會(huì)在編譯時(shí)不通過(guò),提示錯(cuò)誤.
利用關(guān)鍵字instanceof來(lái)判斷一個(gè)對(duì)象是不是一個(gè)類的對(duì)象,當(dāng)然也可以用Beans.isInstanceOf(Object, Object).
JList的元素都是通過(guò)JListl.getModel()的ListModel來(lái)進(jìn)行處理的,而不是直接用JList來(lái)處理.
ListModel.getElementAt(index).
返回鼠標(biāo)所在處的item在JList中的位置:int index = JList.locationToIndex(MouseEvent.getPoint());
然而,最好是用DefaultListModel的對(duì)象來(lái)作為JList的構(gòu)造函數(shù)的參數(shù),因?yàn)镴List默認(rèn)的ListModel功能很少,不能向其中加入刪除元素.
DefaultListModel.addElement(), add(), set(), remove(), clear()....
JList還用一SelectionModel
當(dāng)選擇完成后,即鼠標(biāo)放開后,如多個(gè)選擇時(shí)可能會(huì)用到,事件處理JList.addListSelectionListener ---> !e.getValueIsAdjusting()處理.
而當(dāng)JList的Item變化,即變多或刪除時(shí),事件處理是用DefaultListModel.addListDataListener();當(dāng)變化時(shí),如存儲(chǔ)item的數(shù)組在其他地方調(diào)用處理過(guò)了,則在這里更新.