Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 JPanel 来模拟打印预览并仅打印内容面板,但是我遇到了一个问题,即如果我尝试打印本质上是相同文档的多个面板,则只会打印当前显示在屏幕上的面板。
有没有一种方法可以强制 JPanel 重新绘制,即使它当前不在屏幕上?
我努力了:
JComponent.setDoubleBuffered()
RepaintManager.setDoubleBufferingEnabled()
paint()
repaint()
print()
我无法将它从屏幕上绘制出来,我觉得我在与 Swing API 作斗争是在浪费时间,所以我只是作弊,让面板在打印时显示在屏幕上;现在我有了一个新的“功能”,可以显示正在打印的页面。
如果有人知道如何做到这一点,我会留下这个问题,因为我不想把所有的页面都推到用户的脸上。
更新
原来问题出在扩展java.awt.Container的组件上,Swing 组件必须覆盖某些处理这种渲染的 AWT 方法。
java.awt.Container