1
好吧,我真的不明白爲什麼這不起作用。另一個類中的鏈表可以從一個方法訪問,但不能從另一個方法訪問
class SketcherModel extends Observable implements Iterable<Element>{
public Iterator<Element> iterator(){
return elements.iterator();
}
public LinkedList<Element> elements = new LinkedList<Element>();
}
所以我在班裏Element
在我的應用程序的「模型」部分的鏈表。我們的想法是,當該應用程序的「觀看」部分執行paint()
方法,它會訪問鏈接的列表和繪製它包含的每個Element
,如在下面的代碼所示:
public class SketcherView extends JComponent implements Observer{
public SketcherView(Sketcher theApp){
this.theApp = theApp;
//Testing to see if I can access the linked list, 'elements', outside of the paint() method;
Element test = theApp.getModel().elements.iterator().next()
}
public void update(Observable o, Object rectangle){
//Code to respond to changes in model...
}
public void paint(Graphics g){
Graphics2D g2D = (Graphics2D)g;
for(Element element : theApp.getModel()){
element = (Element)elements.iterator().next();
g2D.setPaint(element.getColor());
g2D.draw(element.getShape());
}
}
現在,當訪問所述經鏈接列表elements
從類構造函數它似乎沒有問題,但是當我使用基於集合的for循環通過使用迭代器運行elements
它說'元素無法解析'。我錯過了什麼嗎?
感謝您解決問題,但即使我嘗試訪問'元素'通過保存在'element'中的'model'的時刻,我應該無法訪問嗎? (我想知道爲什麼它不起作用,所以我不會再犯同樣的錯誤) 此外,當使用'paint()'而不是'paintComponent()'需要? –
由於'elements'是模型的公共字段,因此可以將該循環寫爲for(Element element:theApp.getModel()。elements)',或者作爲'List elements = theApp.getModel()。elements; for(Element element:elements)'。 AFAIK,'paint()'不應該被Swing組件覆蓋。 –
非常感謝,謝謝 –