java—有没有一种方法可以使用javafx在一张纸上打印多个节点?

bgibtngc  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(423)

我可以成功地在纸上打印表格,但如果我也想打印例如 label 在同一张纸上的那张table上面,如何做到这一点?这是我的打印代码:

private void print(Node node) {
    Printer printer = Printer.getDefaultPrinter();
    PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM);
    PrinterJob job = PrinterJob.createPrinterJob();
    double scaleX = pageLayout.getPrintableWidth() / node.getBoundsInParent().getWidth();                
    Scale scale = new Scale(scaleX, 1);
    node.getTransforms().add(scale);

    if (job != null && job.showPrintDialog(node.getScene().getWindow())) {
        boolean success = job.printPage(pageLayout, node);
        if (success) {
            job.endJob();
        }
    }

    node.getTransforms().remove(scale);
}

我打电话来 print 按钮中的方法如下:

printButton.setOnAction(e -> print(table));

有什么想法吗?

jrcvhitl

jrcvhitl1#

只需将节点放入一个类似于窗格的容器中,然后打印此窗格。窗格本身就是一个节点。

相关问题