0
我使用JFreeChart
內部的ChartPanel
與SWT_AWT
橋接。我想要做的是使用SWT來處理圖表的打印。有沒有辦法將chartpanel
從SWT上繪製到打印機GC上?JFreeChart和swt中的打印
JFreeChart chart = createXYChart(createDataset(v2, v1));
Composite comp = new Composite(parent, SWT.NONE | SWT.EMBEDDED);
chart.removeLegend();
//ChartComposite c = new ChartComposite(parent, SWT.NONE | SWT.EMBEDDED, chart, true);
Frame frame = SWT_AWT.new_Frame(comp);
ChartPanel panel = new ChartPanel(chart);
panel.setMaximumDrawHeight(10000);
panel.setMinimumDrawHeight(0);
panel.setMaximumDrawWidth(10000);
panel.setMinimumDrawWidth(0);
panel.setPopupMenu(null);
frame.add(panel);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
PrintDialog dialog = new PrintDialog(shell);
try {
//PrinterData printerData = Printer.getDefaultPrinterData();
PrinterData printerData = dialog.open();
if (printerData != null) {
Printer printer = new Printer(printerData);
if (printer.startJob("Text")) {
GC gc = new GC(printer);
if (printer.startPage()) {
gc.drawString("HDSDFSDFSDFSDFDS", 0, 0);
//WANT TO PRINT CHART SOMEHOW HERE
printer.endPage();
}
gc.dispose();
printer.endJob();
}
printer.dispose();
System.out.println("Print job done.");
}
} catch (Exception exception) {
exception.printStackTrace();
}
我居然發現類似的東西較早,但有一件事我想要做的就是自動縮放圖表一整頁的無拉伸效果。我可以使用ChartPanel來做到這一點,但這是一個AWT解決方案,我需要一個SWT解決方案來集成到我的Eclipse RCP應用程序中。 理想情況下,我希望在幕後製作圖表,而不必將其展示給用戶,然後自動將其作爲完整頁面打印到打印機。這是一個無需用戶交互即可自動打印數據集的程序。 – CryptDemon
@CryptDemon你可以用一個全尺寸的新殼體創建圖表,打印它,然後關閉Shell。缺點是用戶會在屏幕上短暫地看到圖表是全尺寸的: - / – Baldrick