1

私は、ユーザーがマウスを使用して画像上にいくつかのマーカーを配置し、線を引くことができるアプレットを開発しています。

線やマーカーを置いたスペースがJPanelです。マーカーをJComponentsとして作成し、線は単純なLine2Dです。

マーカーは、円が色で塗りつぶされた透明な正方形です。

画像をズームおよびドラッグするために、JPanelにいくつかのマウスリスナーを配置しました。マーカーにもマウスリスナーがあり、パスについては、JPanelに新しいマウスリスナーを追加します。線を引く必要がある場合は、マーカーのリスナーを削除します。

マークの作成に問題はありません。線は、マーカーまたは別の線からのみ開始できます。線を引こうとすると、マーカーをクリックしてマウスをドラッグします。マーカーの透明な部分に線が見えます。別のマーカーの近くを通過すると、これらにも線が表示されますが、2つのマーカーの間のスペースには何も表示されません。

どちらが問題なのかわかりません。JPanelのpaintComponentメソッドをオーバーライドし、そのGraphics2Dを使用します。

あなたが何かを必要とするならば、自由に尋ねてください。

4

1 に答える 1

1

さて、私はカジュアルなテストのおかげで解決策を見つけました。

JPanelのpaintComponentで、線を引いた後、次の2つのコマンドがありませんでした。

this.revalidate();
this.repaint();

これですべてがうまく機能します。

于 2012-12-07T08:11:24.237 に答える