我有一个 Java 桌面应用程序,它在某些时候显示一个带有 GridBagLayout 的 JPanel 和网格内的其他 JPanel。此JPanel 以某种颜色显示。我想要的是将此 JPanel 导出为另一种颜色的 PDF(我正在使用 iText)。导出没有问题(PDF 是使用原始颜色的 JPanel 生成的),但我不确定在 PDF 上更改 JPanel 颜色的正确方法。
我的第一种方法是将原始 JPanel 的背景颜色设置为 PDF 上的颜色。我有一个实用类来使用接收 JPanel 的方法生成我的 PDF,在这个方法上,我制作了 jPanel.setBackgroundColor。这行得通,但问题(对大多数人来说可能很明显)是它也改变了应用程序上显示的原始 JPanel。我认为通过 JPanel 调用此方法将是 Java 值传递。经过一番阅读,我现在明白它确实是传值,但是指向对象JPanel的指针的值,而不是真正的对象,因此改变了它的属性,也改变了原来的。
另一种方法是克隆原始的 JPanel。但后来注意到 JPanel 不可克隆。还想过在新的 JPanel 上重新创建原始 JPanel,但它变得太复杂了。
因此,我想就哪种方式是正确的方式提出一些意见。
非常感谢您提前。
干杯!