完整的代码可以在github上找到。打印部分位于src/main/java/antafes/vampireEditor/gui/BaseWindow.java
下,页面对象可以在src/main/java/antafes/vampireEditor/print/
中找到。
对我来说另一件奇怪的事情是,lambda函数中的部分被调用了大约10次…这正常吗?
如果您需要进一步的信息,请让我知道。
如果我使用一个字符已经显示的打印预览元素,至少对于当前选择的页面(这三行被注释掉了),我已经设法让它工作了。
if (!this.isAnyCharacterLoaded()) {
return;
}
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setJobName(this.language.translate("printCharacter"));
printerJob.setPrintable ((graphics, pageFormat, pageNum) -> {
if (pageNum > 0){
return Printable.NO_SUCH_PAGE;
}
Graphics2D graphics2D = (Graphics2D) graphics;
graphics2D.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
//CharacterTabbedPane pane = (CharacterTabbedPane) charactersTabPane.getSelectedComponent();
//PrintPreviewPanel printPreview = pane.getPrintPreview();
//printPreview.printContent(graphics2D);
PrintBase page;
switch (pageNum) {
case 0:
default:
page = new General(this.getActiveCharacter(), false);
break;
}
Dimension dimension = new Dimension((int) pageFormat.getWidth(), (int) pageFormat.getHeight());
page.setSize(dimension);
page.create();
page.paint(graphics2D);
return Printable.PAGE_EXISTS;
});
if (!printerJob.printDialog()) {
return;
}
try {
printerJob.print();
} catch (PrinterException ex) {
// handle exception
}
页面上的内容应像打印预览中那样显示。
https://stackoverflow.com/questions/56647884
复制相似问题