【发布时间】:2013-03-04 10:22:21
【问题描述】:
我有一个 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,但它变得太复杂了。
所以我想对哪种方法是正确的方法提出一些意见。
非常感谢您。
干杯!
【问题讨论】:
-
在转换时更改颜色然后在完成后返回原始颜色是否可以接受(桌面用户界面中可能有轻微闪烁)?或者在转换时移除面板,也许用缓冲图像填充它的区域?
标签: java swing background pdf-generation jpanel