代码之家  ›  专栏  ›  技术社区  ›  markzzz

Java-FlowPanel-使用来自子级的父变量

  •  2
  • markzzz  · 技术社区  · 14 年前
    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();
        }
    }
    

    2 回复  |  直到 14 年前
        1
  •  1
  •   Chris Dennett    14 年前

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

    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;
        }
    }
    
        2
  •  1
  •   hvgotcodes    14 年前

    你应该从下面开始。。。

    public class PageContent extends .... {
        private PageHeader header;
        public PageContent() {
           this.header = new PageHeader()
        }
    
        // add setHeader/getHeader methods here.
    
    }