私はそれに3つのゲームを実装するゲームを作っています。 1つのクラスで自分のコードを始めました。私はエラーが発生しているMVC形式に移動したいからです。私はGameViewクラスのすべてのコードを書いて始めましたが、今ではこのクラスのコードをSViewクラスに移動したいと思っています。問題は、GameViewクラスのJFrameを初期化していて、コードをSViewクラスに移動すると変数フレームが見つからないということです。だから私はそれをパネルにしてからそれを動かすように言われましたが、それは単に私のゲームを台無しにしています。MVC Javaで自分のコードを実装する方法は?
答えて
あなたは物事を少しずつ組織しなければなりません。考慮すべき事項:
GameView
メインウィンドウですか?そのようにしてくださいGameView extends JFrame
。SView
はパネルですか?それをそう作るSView extends Panel
。考える
もう一つ:SView
はあなたGameView
に追加するいくつかのパネルであるが、それは自体を追加するSView
の責任ではありません。あなたはまた、GameView
ではなく、コンストラクタコードでnew SView()
を追加する可能性がありf.e:
GameView gameView = new GameView();
gameView.add(new SView());
、代わりに、単にインスタンス化し、これらのクラスの両方の外でどこかにこれらの部品を組み立てます。
とにかく、ここでの主な点は、コンポーネントが独自のコンテンツ/子を作成するだけで、そのコンポーネント自体を親に追加することには関与しないことです。
幸運。
ヒント:
- あなたは簡単のJPanelを入れ替えることができるように、メインGUIはCardLayoutを使用します。
- ゲームメニューを選択する主な機能は、JPanelsをスワップすることです。そのため、選択したゲームが視覚化され、選択されたゲームが初期化されます。
- 各ゲームで個別に作業します。ゲームを保持するためのJPanelを作成するために、個々のゲームクラスを用意してください。各ゲームクラスに、JFrameを作成し、ゲームクラスインスタンスを作成し、インスタンスのJPanelをJFrameに配置し、ゲームを初期化して表示するテストの主要メソッドを与えます。
- ゲームが単独で機能したら、複数のゲームを表示できる大きなGUIにゲームを追加してみてください。
- 各ゲームクラスに共通の機能の共通インターフェイスを実装することを検討してください。たとえば、各ゲームクラスがオーバーライドするinitialize()メソッドをインターフェイスに与えることができます。
- 各ゲームクラスは、モデル、このモデルとやりとりするコントロールクラス、および前述のJPanelでモデルの状態を表示するビュークラスを持つように、MVCベースである必要があります。
+1優れたデザインアドバイス; ['MainPanel'](http://stackoverflow.com/a/3072979/230513)は、ポイント3の例です。任意の数のインスタンスを使用して、より大きなGUIのプロトタイプを作成できます。 – trashgod
@trashgod:ありがとう。ここでは、MVCの例の私のリンクです:[MVC_ProgressBarThread](http://stackoverflow.com/questions/5533497/mvc-progress-bar-threading/5533581#5533581) –
良い[例](http://stackoverflow.com/questions/5533497/mvc-progress-bar-threading/5533581#5533581);オブザーバーのパターンを実装する方法として、私はこれを引用した(http://stackoverflow.com/a/3072979/230513)。必要に応じて私のものを編集するのをためらってはいけません。 – trashgod
- 1. スイングでJavaでMVCを正しく実装する方法は?
- 2. Javaで独自のUI要素を実装する方法は?
- 3. Eclipseエディタで自分の言語を実装する方法
- 4. ASP.NET MVCで招待コードを実装する方法
- 5. 自分のシリアル化をJavaで実装する
- 6. Actionscript 3で自分のクラスのキャストを実装する方法は?
- 7. Javaメソッドを実装する方法は?
- 8. Javaでファイルフィルターを実装する方法
- 9. JavaでhashCode()を実装する方法
- 10. Javaでゲートウェイを実装する方法
- 11. JavaでKerberosプロトコルの移行を実装する方法は? (S4U2自己)
- 12. javaで書かれたテキストエディタの自動補完を実装する方法は?
- 13. Linuxカーネルを再コンパイルせずに自分のシステムコールを実装する方法は?
- 14. 5分ごとにアラートメッセージを表示するコードを実装する方法は?
- 15. Java Swing FocusListenerのMVC実装
- 16. Asp.net MVCでXMLローカリゼーションを実装する最善の方法は?
- 17. C++でテンプレートクラスの共分散を実装する方法は?
- 18. このコードを自分のコードに実装するにはどうすればよいですか?
- 19. MVC 3でチェックボックスを実装する方法は?
- 20. MVCアプリケーションでオートコンプリートを実装する方法は?
- 21. mvcフレームワークでルックアップテーブルを実装する方法は?
- 22. mvcで依存関係注入を実装する方法は?
- 23. JavaでSpringベースのアプリケーションでマルチスレッドを実装する方法は?
- 24. MVCのモデル部分を実装
- 25. インストールウィザードで自分のC++ソースファイルを実行する方法は?
- 26. Xcodeでプロトコルメソッドを自動実装する方法は?
- 27. 英語の辞書をJavaで実装する方法は?
- 28. ASP.NET MVCでのViewModelの実装 - このコードはベストプラクティスですか?
- 29. BSTで削除コードを実装する方法は?
- 30. Asp.net MVCでオンライン編集のエクセルを実装する方法
JFrameまたはJPanelを拡張するためのクラスの元のポスターのコードでは、正当な理由はありません。 –
最後の行はどうすればよいですか?パラメータにフレームがあります。 panel.setLocation((frame.getWidth() - panel.getWidth())/ 2,80); –