好吧,我真的不明白为什么这不起作用。
class SketcherModel extends Observable implements Iterable<Element>{
public Iterator<Element> iterator(){
return elements.iterator();
}
public LinkedList<Element> elements = new LinkedList<Element>();
}
因此,我的应用程序“模型”部分的 Element
类中有一个 LinkedList。这个想法是,当应用程序的“view”部分执行 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
时> 使用迭代器它说“元素无法解析”。我错过了什么吗?
最佳答案
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 循环中声明。代码应该是
for(Element element : theApp.getModel()){
g2D.setPaint(element.getColor());
g2D.draw(element.getShape());
}
另一个不相关的问题是,您应该重写 paintComponent()
,而不是 paint()
。
关于java - 另一个类中的链表可以通过一种方法访问,但不能从另一种方法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541659/