私はJavaの学生で、小さなコマンドラインカードゲームの基本的な機能を終了しました。ゲームはマジックタイプのトレーディングカードゲームの簡易版です。AIはありません。自分自身または他の人間のプレイヤーと対戦します。
この時点で、MVCを使用してGUIを追加しようとしていますが、ボタンにMouseListenerを追加する際に問題が発生しています。
これは何が起こっているのかについての簡単な説明です:
- スーパークラスの継承によって
Model
拡張されるクラスがありますObservable
- を実装する
View
クラスObserver
。 - そして、
Controller
拡張するクラスMouseAdapter
それから私はすべてをまとめました:
....
View view = new View();
Model model = new Model();
model.addObserver( view );
Controller controller = new Controller();
// associate Controller's Model and View objects
controller.addModel(model);
controller.addView(view);
view.addController(controller); // i try to add the MouseListener
....
ViewのaddController()メソッドは次のとおりです。
public void addController(Controller controller){
this.myButton.addMouseListener( controller )
}
メソッドが呼び出されていること(その中の何かをprintln)をすでに確認しaddController()
ましたが、何らかの理由でリスナーが設定されていませんmouseReleased()
。ボタンをクリックしても呼び出されません。
私が見落としているかもしれない考えやステップはありますか?感謝。
編集(コントローラーコード):
public class Controller extends MouseAdapter {
Model model;
View view;
public void addModel(Model m){
this.model = m;
}
public void addView(View ui){
this.view = ui;
}
// All @Overrides
@Override
public void mouseReleased(MouseEvent me) {
System.out.println("oh, it arrived");
}
}