2

特定の時点で GridBagLayout を持つ JPanel とグリッド内の他の JPanel を表示する Java デスクトップ アプリケーションがあります。この JPanel は特定の色で表示されます。私が欲しいのは、この JPanel を PDF (私は iText を使用しています) に別の色でエクスポートすることです。エクスポートには問題ありません (PDF は JPanel の元の色で生成されます) が、PDF の JPanel の色を変更する正しい方法がわかりません。

私の最初のアプローチは、元の JPanel の背景色を PDF に表示する色に設定することでした。JPanel を受け取るメソッドを使用して PDF を生成するユーティリティ クラスがあり、このメソッドで jPanel.setBackgroundColor を作成しました。これは機能しますが、問題 (ほとんどの人にとって明らかな問題) は、アプリケーションに表示された元の JPanel も変更されることです。JPanel を渡してこのメ​​ソッドを呼び出すのは、Java の値渡しになると思いました。いくつか読んだ後、実際には値渡しであることがわかりましたが、オブジェクト JPanel へのポインターの値であり、実際にはオブジェクトではないため、そのプロパティを変更すると、元の値も変更されます。

もう 1 つのアプローチは、元の JPanel を複製することでした。しかし、JPanel は Cloneable ではないことに気付きました。また、新しい JPanel で元の JPanel を再作成することも考えましたが、複雑になりすぎています。

そこで、どの方法が正しいかについて意見を述べたいと思います。

事前にどうもありがとうございました。

乾杯!

4

1 に答える 1

1

シンプルですが、わずかに異なる解決策の 1 つは、別のパネルをパネルに巻き付けてから GUI に表示し、印刷することです。GUI 用と印刷用に異なるパネルを使用する場合、2 つの異なる背景色 (および異なる他の設定) を使用できます。もちろん、これは上記の問題に対する厳密な解決策ではありませんが、おそらくかなり良い回避策です。

于 2013-03-04T11:10:20.603 に答える