2012-02-21 78 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