0
Я использую JFreeChart
внутри ChartPanel
с SWT_AWT
мостом. Я хочу использовать SWT для обработки печати диаграммы. Есть ли способ взять chartpanel
и нарисовать его на принтере GC от SWT?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-решение интегрировалось в мое приложение RCP Eclipse. В идеале я хотел бы сделать диаграмму за кулисами, не отображая ее пользователю, а затем автоматически распечатывать ее как полную страницу на принтере. Это программа, которая автоматически печатает наборы данных без взаимодействия с пользователем. – CryptDemon
@CryptDemon Вы можете создать диаграмму в новой «оболочке» с полным размером, напечатать ее и закрыть «оболочку». Недостатком является то, что пользователь вкратце увидит, что на экране отображается полный размер графика: - / – Baldrick