4

ゲームの状態遷移を使用して、ゲームの種類、オプションなどを選択するための複数のビューを持つメニューがあるゲームを作成しています。各メニューは、 JFrame on Canvasオブジェクト内でアクティブにレンダリングされます。CanvasにBufferedImageを描画することにより、すべてのゲーム状態でアクティブなレンダリングを行っているため、 Graphics2D オブジェクトは次のように描画できないため、JButtonやその他のJComponentまたはComponent (awt) を使用できません。

Graphics2D g = bufferStrategy.getDrawGraphics();
g.draw(new JButton("Click me"));

マウス入力を受け取り、Graphics2D オブジェクトで描画できるカスタム ボタンを実装するにはどうすればよいですか?

4

2 に答える 2

1

描画しているコンポーネントにマウス リスナーを追加し、ボタンにしたい領域でマウス クリックが行われたかどうかを判断します。

于 2011-01-05T15:25:37.240 に答える
0

すでに Swing を使用しているアプリケーションで Canvas を使用するのはなぜですか (JFrame は Swing です)。

BufferedImage image = new BufferedImage(blah....)
Graphics2D gfx = image.createGraphics();
JButton but = new JButton("Click me");
but.update(gfx);

しかし、それは本当に本当に本当に醜いです!

JPanelを持ってみませんか?知る限り、ペイント メソッドを上書きして update メソッドを呼び出すだけで、パネルがクリアされないようにすることができます (ただし、Java で遊んでいたのは久しぶりです)。次に、 update メソッドで引数として取得した Graphics2D を使用して描画し、独自のボタンやその他のものを追加することもできます...

于 2011-01-05T15:33:59.567 に答える