我試圖將組件繪製爲PDF。我已經有了itextpdf 4.2,並且一切都很完美。 但是,只有當我試圖呈現可見的框架時,它纔有效。繪製隱藏的Java swing組件
我發現的類似問題是How to paint an invisible JFrame elsewhere?有同樣的問題,但解決方案沒有提供答案。
一小段代碼。 我已經創建了一個JFrame並插入了我想呈現的主要視圖。
JFrame jframe = new ShowingFrame();
jframe.setPreferredSize(new Dimension(PDFHelper.getOriginalWidth().intValue(), PDFHelper.getOriginalHeight().intValue()));
jframe.setMinimumSize(new Dimension(PDFHelper.getOriginalWidth().intValue(), PDFHelper.getOriginalHeight().intValue()));
jframe.add(view);
jframe.setUndecorated(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setState(Frame.ICONIFIED);
jframe.setState(Frame.NORMAL);
//jframe.setVisible(true);
如果我取消jframe.setVisible(true)
比一切正常。 但用戶會看到我想避免的這個框架。
所以問題是:如何繪製隱藏的控制?
內搖擺Component.java類的油漆全部方法首先檢查組件可見:
public void paint(Graphics g) {
if (isShowing()) {
// rest of the code...
}
}
我試圖創建繼承類ShowingFrame extends JFrame
,即覆蓋isShowing,總是返回true。但這沒有幫助。
對於整個'JFrame',這可能很困難。但是,如果足夠繪製框架的*內容窗格*,則應該可以使用http://docs.oracle.com/javase/8/docs/api/javax/swing/SwingUtilities.html#paintComponent-java .awt.Graphics-java.awt.Component中-java.awt中。Container-int-int-int-int-(請注意,該方法有一些注意事項 - 例如它改變了組件邊界 - 但繪製不可見的組件是該方法的實際目的) – Marco13
謝謝,這被看作是工作解決方案,但** paintComponent **僅支持輕量級組件 – WerWolf