2017-04-19 50 views
-1

我的問題,我想從JFrame類變量,抽象類在Java得到JFrame類變量在抽象類

爲例:

public class MainWindow extends Frame { 
    String Variable 1; 
    ..... 
} 

public abstract class AbstractController { 

    // I need to use variable 1 in this class... 

} 

感謝所有...

+0

in AbstractController'Ma​​inWindow test = new MainWindow(); test.getVariable1();'。考慮命名約定。變量名應該始終以小​​寫字母開頭,並且不能是數字 – XtremeBaumer

+0

可能您會將視圖傳遞到控制器中,可能是在構造函數參數中,然後如果需要提取其狀態,控制器將在視圖上調用公共方法。 –

回答

1

我想從java中的jframe類到抽象類變量的問題

我會建議不,你真的不想這樣做,你不想直接訪問和修改另一個類中的變量。您似乎在創建類似於模型 - 視圖 - 控制器或視圖 - 控制器的東西,因此您可能需要根據需要傳遞引用,封裝所有變量,並通過受控的公共方法訪問變量或「狀態」。因此,像這樣:

public class View { 
    private String someStateField; 
    //..... 

    public String getSomeStateField() { 
     return someStateField; 
    } 

    public void setSomeStateField(String someStateField) { 
     this.someStateField = someStateField; 
    } 
} 

和控制器

public abstract class AbstractController { 
    private View view; 

    public AbstractController(View view) { 
     this.view = view; 
    } 

    public view getView() { 
     return view; 
    } 

    public void someMethod() { 
     // can now call view methods here 
    } 

} 

當然控制器的具體版本需要有類似結構的構造函數,並調用父類的構造函數:

public class ConcreteController { 

    public ConcreteController(View view) { 
     super(view); 
    } 

    // .... 

}  

和主要方法需要將它們連接在一起:

public static void main(String[] args) { 
    SwingUtilities.invokeLater(() -> { 
     View view = new View(); 
     AbstractController controller = new ConcreteController(view); 
     // ..... 
    }); 
} 

您的解決方案的細節當然取決於程序結構的其餘部分並進行設置,如果您需要更詳細的答案,請更新您的問題,並提供更詳細的信息和代碼,並回復給我。