0

私はJava Swingを初めて使用し、ボードゲームと可動部分をウィンドウに表示する単純なアプリケーションに取り組んでいます。

現在、私は十分に優れたインターフェースを持っています: アプリケーションはWindowから派生した特別なクラスに基づいて構築されており、ボードとピースを表示するためにオーバーライドされJFrameたメソッドを使用しています (ピースを繰り返し処理して位置情報を収集します)。paintdrawImage

しかし、ゲームウィンドウ全体にいくつかのボタンとテキスト表示領域を追加しようとすると、問題が発生しました。明示的にクリックされるまで、それらのどれも表示されていませんでした。少し調査したところ、このような場合にペイントを無効にすると問題が発生することがわかりました。どうやら、paintボタンなどをいじったり使用したりできますが、実際に/簡単に両方を行うことはできません。

別のアプローチとして、JPanel に画像をペイントする方法を示すチュートリアルに出くわしました。これは、代わりにボード/ピースで使用でき、物事をレイアウトするときに他のボタンやウィジェットのように扱うことができると思います(?)。私は行き止まりの道をたどります (ばかげた質問のように思えますが、私を信じてください...)、私は尋ねたいです: これは良いアプローチですか? それとももっと良い方法がありますか?

4

1 に答える 1

2

super.paint(g)メソッド内から呼び出していないようですpaint。実際には、のようなトップレベルのコンテナにカスタムペイント機能を含めるべきではありませんJFrame

理想的には、その代替アプローチを使用して、それを新しいJComponentベースのクラスに移動する必要があります。ここでは、オーバーライドする必要がpaintComponentあり、またを呼び出す必要がありますsuper.paintComponent(g)。新しいコンポーネントに子コンポーネントを追加する必要がある場合は、確かJPanelに優れたコンテナになります。

于 2013-03-19T23:31:25.223 に答える