2017-04-19 6 views
-1

私の問題抽象クラスでのJFrameクラスから変数を取得する:...すべてのための私はJavaで抽象クラスにJFrameのクラスから</p> <p>exemple変数を取得したい

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

public abstract class AbstractController { 

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

} 

感謝を

+0

です。 test.getVariable1(); '命名規則について考える。変数名は常に小文字で始まり数字でなければなりません – XtremeBaumer

+0

おそらくコンストラクタパラメータでコントローラにビューを渡して、その状態を抽出する必要がある場合、コントローラはパブリックメソッドをビューで呼び出すでしょう。 –

答えて

1

jframeクラスからJavaの抽象クラスに変数を取得したいという私の問題

私は、あなたが実際にそれをしたくない、別のクラスの変数から直接変数にアクセスして変更したくないということを提案します。モデルビューコントローラやビューコントローラに似たものを作成しているように見えるので、必要に応じて参照を渡し、すべての変数をカプセル化し、制御されたパブリックメソッドを介して変数や「状態」にアクセスしたいと思うでしょう。だから、そのような何か:

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); 
     // ..... 
    }); 
} 

あなたのソリューションの詳細はもちろん、プログラムの構造の残りの部分に依存し、設定されています。詳細な回答が必要な場合は、詳細とコードで質問を更新し、私に返答してください。 AbstractController `MainWindow test = new MainWindow();で、

関連する問題