首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >打印时,JPanel的内容仅显示在页面顶部

打印时,JPanel的内容仅显示在页面顶部
EN

Stack Overflow用户
提问于 2019-06-18 19:16:27
回答 1查看 131关注 0票数 0

完整的代码可以在github上找到。打印部分位于src/main/java/antafes/vampireEditor/gui/BaseWindow.java下,页面对象可以在src/main/java/antafes/vampireEditor/print/中找到。

对我来说另一件奇怪的事情是,lambda函数中的部分被调用了大约10次…这正常吗?

如果您需要进一步的信息,请让我知道。

如果我使用一个字符已经显示的打印预览元素,至少对于当前选择的页面(这三行被注释掉了),我已经设法让它工作了。

代码语言:javascript
复制
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
}

页面上的内容应像打印预览中那样显示。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56647884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档