2

我有一个 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,但它变得太复杂了。

因此,我想就哪种方式是正确的方式提出一些意见。

非常感谢您提前。

干杯!

4

1 回答 1

1

一个简单但略有不同的解决方案是在面板上显示另一个面板,然后再将其显示在 GUI 上和打印之前。如果您使用不同的面板进行 GUI 和打印,您可以使用两种不同的背景颜色(以及不同的其他设置)。当然,这不是对所述问题的严格解决方案,但可能是一个相当好的解决方法。

于 2013-03-04T11:10:20.603 回答