首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >另一个类中的链表,可从一个方法访问,但不能从另一个方法访问

另一个类中的链表,可从一个方法访问,但不能从另一个方法访问
EN

Stack Overflow用户
提问于 2012-11-24 21:28:17
回答 1查看 854关注 0票数 1

好吧,我真的不明白为什么这个不起作用。

代码语言:javascript
运行
复制
class SketcherModel extends Observable implements Iterable<Element>{

    public Iterator<Element> iterator(){
        return elements.iterator();
    }   

    public LinkedList<Element> elements = new LinkedList<Element>();
}

因此,我在应用程序的“LinkedList”部分的Element类中有一个模型。这个想法是,当应用程序的“Element”部分执行paint()方法时,它将访问链表并绘制它包含的每个视图,如以下代码所示:

代码语言:javascript
运行
复制
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时,它显示“元素无法解析”。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-24 21:33:12

代码语言:javascript
运行
复制
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循环中声明。代码应该是

代码语言:javascript
运行
复制
for(Element element : theApp.getModel()){
    g2D.setPaint(element.getColor());
    g2D.draw(element.getShape());
} 

另一个未实现的问题是,您应该覆盖paintComponent(),而不是paint()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13541659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档