2

JPanel の描画に問題があります。正しく描画されますが、親コンテナーのサイズを変更すると、JPanel がウィンドウの左上隅と正しい位置に描画されます。

JPanel には、どの JPanel にも属さない一連のコンポーネント (それを含む) をペイントするカスタム ペイント メソッドがあります。これらは、ペイント メソッドが呼び出される直前に JPanel に追加され、直後に削除されます。

  paintOnto.setIgnoreRepaint(true);
  paintOnto.add(getPaintableComponent());
  getPaintableComponent().paint(g);
  paintOnto.remove(getPaintableComponent());
  paintOnto.setIgnoreRepaint(false);

paintOnto は JPanel への参照であり、getPaintableComponent() は描画される JComponent を返します。g は、JPanel の paint メソッドから渡された Graphics オブジェクトです。

追加/削除コードは mac ではまったく必要ありませんでしたが、それがないと Windows ではコンポーネントがまったく描画されませんでした。

この問題は Windows と ubuntu にのみ存在し、Mac には存在しません。他のシステムはテストされていません。

それを引き起こしている可能性のあるアイデアはありますか?JPanel をペイントするたびにその位置を確認しましたが、左上隅に配置されることはありません。

ありがとう

4

1 に答える 1

2

塗装前のセーブAffineTransformgraphics塗装後の復元をお試しください。

于 2012-04-04T10:06:09.867 に答える