2012-02-21 56 views
2

我碰到的一个很常见的问题是我有一些领域,我想引用他们通过衍生类从字段的类初始化。 让我更具体。全球领域的类

Class Diagram

我有从主类派生的三个班。 每个类都有一个与字段交互的方法。在这种情况下,有一个调用类(JPanel)的JFrame并将其添加到内容窗格。

我发现的方法是将Frame类创建的对象的引用传递给Panel类的构造函数。并通过它参考他们。

有没有更高效的方法?我如何为所有派生类创建全局字段或方法在这种情况下,它们是主类的组件?

UPDATE

这样的事情。

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class JFrame1 extends JFrame { 

    protected String field1; 
    protected String field2; 

    public JFrame1() { 
     add(new Panel1()); 
    } 
} 

class Panel1 extends JPanel { 

    public Panel1() { 

     // field1 = "String"; Wrong 
     } 
    } 

我知道我可以嵌套class Panel1public class Frame1,问题会得到解决,但如果我想要的东西在不同的文件两班?

+0

什么叫_derived_是什么意思? – 2012-02-22 13:28:31

+0

@Qwe我的意思是创建/初始化/调用我不知道我必须使用的确切单词。 – 2012-02-23 13:14:45

+0

很简单就是写作为回答你的问题,请编辑你的问题与[SSCCE](http://sscce.org/),否则有一些网页,你可以发送订单基于图片付款 – mKorbel 2012-02-23 13:42:20

回答

0

好吧我的事情我找到了一种方法。

Frame类

import javax.swing.JFrame; 

public class JFrame1 extends JFrame { 

    private String field1; 

    public JFrame1() { 
     add(new PanelA()); 
    } 

class PanelA extends Panel1 { 

    @Override 
    public String getField1() { 
     return field1 
    } 
} 

创建界面

public interface Connector { 
    public String getField1(); 
} 

而Panel1的类

import javax.swing.JPanel; 

public abstract class Panel1 extends JPanel implements Connector { 

    field1 = getField1(); 
} 
2

三个派生自主类的类 - 这是什么意思?您的三个类从(扩展)JPanel派生而来,并且它没有任何字段。

如果你问你怎么三类应该从Frame1进入字段这大概是它们的容器 - 那么你应该使用getParent()获得参考父类,检查它是否是Frame1,如果是 - 访问它的字段。

+0

你写'我的三个类如何访问Frame1中的字段'。我使用'getParent()',但我不能将JPanel强制转换为Frame1类。 – 2012-02-23 13:05:14

+0

同意你拍到黑暗+1 – mKorbel 2012-02-23 13:42:50