0

Graphics (または Graphics2D) オブジェクトの特定の場所に JPanel を描画する可能性はありますか? キャンバスのペイント メソッドをオーバーライドし、そこで panel.paint(g) を呼び出しましたが、期待どおりに動作しません。

@Override
public void paint(Graphics g){
  Dimension size = panel.getPreferredSize();
  panel.setBounds(pos.x, pos.y, size.width, size.height);
  panel.paint(g);
}

size オブジェクトは私が望むように正しく定義されているので、それは問題ではありません。また、pos には画面上の正しい x と y が含まれています。

4

2 に答える 2

1

後者は AWT メソッドで、前者は Swing メソッドであるため、おそらくpaintComponent代わりにを使用する必要があります。paint

Swing の良い点の 1 つpaintComponentは、Graphics渡されたものが実際には常に になることです。したがって、次のGraphics2Dことができます。

Graphics2D g = (Graphics2D)lg;

を使用して古い変換を保存し、または またはおよびメソッドを使用しgetTransformて の変換を変更できます。古い transformを復元することを忘れないでください。そうしないと、そのコンテキストによって次に描画されるものをごまかす可能性があります。Graphics2DsetTranformscaletranslaterotate

于 2009-12-30T12:21:47.293 に答える