我正在研究用於Eclipse開發的JFace
。我做了一個插件,作爲虛擬內容提供商的ComboViewer
。該提供者本質上提供了硬編碼值的數據模型ArrayList
。無論如何,我試圖理解這種方法。正確反映JFace觀衆數據變化的方法
我通過comboViewer.setInput(list)
方法在ComboViewer
上設置模型。
在按下按鈕時,我調用另一個對象的方法來更新list
,我將input
作爲傳遞給ComboViewer
(增加了另一個元素),我調用comboViewer.refresh
來反映更改,但沒有任何反應。
事實證明:
我需要調用comboViewer.setInput(list)
與更新列表看到數據在我的UI組合的變化(即以前添加)。我發現comboViewer.refresh
只有當我得到comboViewer
作爲輸入Object
通過並修改它時才反映任何更新。即如果我這樣做:
List<SomeObject> data = ((List<SomeObject>)(comboViewer.getInput()));
data.add(new SomeObject("aaa","cccc"));
comboViewer.refresh();
只有這樣才能刷新數據。但我不明白什麼是使用這些API的正確方法。
我應該得到一個保留並修改我在setInput
方法中傳遞的對象嗎?感覺我不應該這樣做。那麼refresh
的目的是什麼?
更新提供給Viewer
的數據的正確方法是什麼?
這個'list'是什麼?所有更新沒有'setInput'。 –
'list'是一個自定義對象的列表,其硬編碼值用作'comboViewer'的數據。不確定你的意思是'所有的更新都沒有setInput.'很好, – Cratylus
好吧,我會爲你提供一些工作代碼。 –