Java-FlowPanel-使用子变量中的父变量

Java-FlowPanel-使用子变量中的父变量,java,Java,我需要管理内容实例,但不可见。对不起,我有点生疏:)您需要如何管理变量?你在这个物体里面,应该可以做任何你需要的事情。如果需要访问父对象,请执行以下操作: public class PageIndex extends FlowPanel { private PageHeader header; private PageCenter center; private PageFooter footer; public PageIndex() { thi

我需要管理内容实例,但不可见。对不起,我有点生疏:)

您需要如何管理变量?你在这个物体里面,应该可以做任何你需要的事情。如果需要访问父对象,请执行以下操作:

public class PageIndex extends FlowPanel {
    private PageHeader header;
    private PageCenter center;
    private PageFooter footer;
    public PageIndex() {
        this.header=new PageHeader();
        this.add(header);

        this.center=new PageCenter();
        this.add(center);

        this.footer=new PageFooter();
        this.add(footer);
   }
}

public class PageCenter extends FlowPanel {
    private PageMenu menu;
    private PageContent content;

    public PageCenter() {
       this.setStyle("center");

       this.menu=new PageMenu(content);
       this.add(menu);

       this.content=new PageContent();
       this.add(content);
   }
}

public class PageMenu extends FlowPanel {
    private PageContent content;
    private PageMenuLogin login;
    private PageMenuSearch search;
    private PageMenuOffers offers;
    private PageMenuStudents students;
    private PageMenuShopping shopping;
    private PageMenuEvents events;
    public PageMenu (PageContent content) {
        this.content=content;
        this.login=new PageMenuLogin();
        this.add(login);
        this.search=new PageMenuSearch();
        this.add(search);
        this.offers=new PageMenuOffers();
        this.add(offers);
        this.students=new PageMenuStudents();
        this.add(students);
        this.shopping=new PageMenuShopping();
        this.add(shopping);
        this.events=new PageMenuEvents();
        this.add(events);

        // IF I WRITE THIS I GET AN org.apache.jasper.JasperException: java.lang.NullPointerException
        this.content.daghine();
    }
}

如果您的意思是需要从PageContent方法外部访问PageHeader,那么只需将header变量放在PageContent类上即可

下面的内容应该可以让你开始

public class PageIndex extends FlowPanel {
    protected final PageContent content;
    ...

    public PageIndex() {
        content = new PageContent(this);
        this.add(content);
        ...
    }

    public PageContent getContent() {
        return this.content;
    }
}

public class PageContent extends FlowPanel {
    protected final PageIndex index;

    public PageContent(PageIndex index) {
        this.index = index;
    }

    public PageIndex getIndex() {
        return this.index;
    }

    public void exampleFunction() {
        createLabel().setLabel("HOLAAA").setStyle("content_title");
    }
}

public class PageMenuLogin extends FlowPanel {
    protected final PageIndex index;

    public PageContent(PageIndex index) {
        this.index = index;
        index.getContent().exampleFunction();
    }

    public PageIndex getIndex() {
        return this.index;
    }
}

它不起作用!我用更多的细节编辑了我的主题。你怎么看我不能调用那个函数…你需要把“this”传递给构造函数,就像我的代码中演示的那样。Ok。我想还有另一种方法:)我会尝试编辑代码…如果我有问题,我会让你知道!是的,有,但它需要嵌套类。嗯…看上面的代码。我犯了一个错误。为什么?我哪里错了?谢谢你的时间,伙计:)哦,真管用!我只需要在页面菜单上切换页面内容:)
public class PageContent extends .... {
    private PageHeader header;
    public PageContent() {
       this.header = new PageHeader()
    }

    // add setHeader/getHeader methods here.

}