特定の時点で 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 を再作成することも考えましたが、複雑になりすぎています。
そこで、どの方法が正しいかについて意見を述べたいと思います。
事前にどうもありがとうございました。
乾杯!