我想從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);
// .....
});
}
您的解決方案的細節當然取決於程序結構的其餘部分並進行設置,如果您需要更詳細的答案,請更新您的問題,並提供更詳細的信息和代碼,並回復給我。
in AbstractController'MainWindow test = new MainWindow(); test.getVariable1();'。考慮命名約定。變量名應該始終以小寫字母開頭,並且不能是數字 – XtremeBaumer
可能您會將視圖傳遞到控制器中,可能是在構造函數參數中,然後如果需要提取其狀態,控制器將在視圖上調用公共方法。 –