1

Web ページに埋め込むことができる機能する Java アプレットがあり、追加機能のためにいくつかのスイング コンポーネントを追加したいと考えています。ただし、JLabel のようなコンポーネントを追加するたびに、ペイント メソッド全体を削除しない限り、ビューポート/キャンバスに表示されません。後者のオプションを使用すると、swing コンポーネントを追加できますが、当然、シェイプをレンダリングできません。どちらか一方ではなく、排他的 OR (XOR) に似ているように見えます。

とにかく、swing コンポーネントを追加し、それでも paint(Graphics g) メソッドを維持するためのネイティブ Java アプレットがありますか。JApplet ではなく Applet から継承していることに注意してください。

4

4 に答える 4

3

アプレットで paint メソッドをオーバーライドすると、簡単な方法はありません。

アプレットでペイントをオーバーライドする代わりにできること。

  1. 代わりに JComponent を拡張し、そこでカスタム描画を行います。
  2. 前のステップのコンポーネントを含む、必要なすべてのスイング コンポーネントを含む JPanel を作成します。
  3. デフォルトのペイント方法を使用しているアプレットにそのパネルを追加します。
于 2013-04-05T11:26:34.103 に答える
2

オーバーライドしない別のパネルにコンポーネントを追加することをお勧めしますpaint。をオーバーライドpaintすることで、コンポーネントの描画方法をカスタマイズしているため、レイアウト マネージャーとそれが管理する必要のあるコンポーネントはカウントされませんpaint。レンダリング方法を決定するのは、作成した の実装だけです。

したがって、アプレットには、コンポーネントを含むパネルと、カスタム ペインティングを行うパネルが含まれます。

于 2013-04-05T11:22:13.093 に答える
0

呼び出して、アプレット キャンバス上のコンポーネントを視覚化することができました。

paintComponents(g);

したがって、コンポーネントは、実際の paint(Graphics g) メソッドがそのエポックを完了した後にペイントされます。

于 2013-04-06T16:32:52.523 に答える