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();で、
です。 test.getVariable1(); '命名規則について考える。変数名は常に小文字で始まり数字でなければなりません – XtremeBaumer
おそらくコンストラクタパラメータでコントローラにビューを渡して、その状態を抽出する必要がある場合、コントローラはパブリックメソッドをビューで呼び出すでしょう。 –