0

我正在使用 JPanel 来模拟打印预览并仅打印内容面板,但是我遇到了一个问题,即如果我尝试打印本质上是相同文档的多个面板,则只会打印当前显示在屏幕上的面板。

有没有一种方法可以强制 JPanel 重新绘制,即使它当前不在屏幕上?

我努力了:

  • 通过以下方式禁用双缓冲:
    • JComponent.setDoubleBuffered()
    • RepaintManager.setDoubleBufferingEnabled()
  • 画两次
  • 画透paint()
  • 画透repaint()
  • 画透print()
4

1 回答 1

0

我无法将它从屏幕上绘制出来,我觉得我在与 Swing API 作斗争是在浪费时间,所以我只是作弊,让面板在打印时显示在屏幕上;现在我有了一个新的“功能”,可以显示正在打印的页面。

如果有人知道如何做到这一点,我会留下这个问题,因为我不想把所有的页面都推到用户的脸上。


更新

原来问题出在扩展java.awt.Container的组件上,Swing 组件必须覆盖某些处理这种渲染的 AWT 方法。

于 2013-10-21T13:06:31.447 回答