1

キャンバスでダブルバッファリングを使用しようとしていますが、これはこれまでに行ったことのないことです。オンラインのチュートリアルを利用して、次のコードをセットアップしてキャンバスをインスタンス化し、そのバッファリングをセットアップしました。グラフィックのレンダリング (ここには示されていません) を含む完全なプロセスをコーディングし、コンパイラーはそれを受け入れます。

 volCanvas = new VolCanvas();
 volCanvas.setBackground(Color.black);
 volCanvas.setBounds(10, 380, 1180, 125);
 add(volCanvas);
 volCanvas.createBufferStrategy(2);            (Program blows up here)
 offScreen = volCanvas.getBufferStrategy();
 ofsg = (Graphics2D) offScreen.getDrawGraphics();

しかし、プログラムは、以下のコードのフラグが立てられた行で爆発します。ランタイムは、「コンポーネントには有効なピアが必要です」という説明とともに、不正な状態の例外をスローします。

私が知る限り、ソース コードは基本的に、いくつかの例で見たとおりなので、ここで何が起こっているのかわかりません。どんな助けでも大歓迎です。

ありがとう、

ジョン・ドナー

4

1 に答える 1

1

コンポーネントには有効なピアが必要です。」

基本的に、GUI が表示されていないか、コンポーネントが表示されている GUI に追加されていないことを意味します。

フォーラムに関するその他の質問は、Swing アプリケーションに関するものです。Swing アプリケーションでは AWT コンポーネント (キャンバス) を使用しないでください。JComponent または JPanel でカスタム ペイントを行います。Swing はデフォルトでダブルバッファリングされます。

于 2010-11-29T17:14:12.537 に答える