在Mac上工作时,Windows上的java PrinterDialog似乎失败

时间:2019-03-18 16:19:08

标签: java javafx

我正在编写一个小型Java应用程序来控制朋友的订购过程。

我正在使用PrinterDialog构造来调用系统打印机,在正在开发的Mac上,它似乎运行得很好。但是,当我在Windows计算机上尝试相同的代码时,该代码将无法打开系统打印机对话框。没有明显的“代码失败”,什么也没有发生。我尝试将Jar文件复制到Windows,并在Windows内的NetBeans上重新编译项目,但似乎都没有任何区别。一两年前有类似的话题,但作者似乎暗示只是在Windows机器上重新构建项目已解决了问题,对我而言似乎没有任何区别。

我们将很感激收到任何使该应用程序在Windows上运行的评论或指针。

有问题的代码是:-

    private void actionPrint(ActionEvent event) {
    try {
        Stage printStage = new Stage();
        FXMLLoader ploader = new FXMLLoader(getClass().getResource("OrderDocument.fxml"));
        Node orderNode = (Node) ploader.load();
        Group printerNode = new Group();
        printerNode.getChildren().add(orderNode);

        Scene printScene = new Scene(printerNode, 620, 875);
        printStage.setScene(printScene);

        Printer printer = Printer.getDefaultPrinter();
        PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM);
        PrinterJob job = PrinterJob.createPrinterJob();
        job.showPrintDialog(printStage);
        if (job != null) {
            boolean success = job.printPage(pageLayout,printerNode);
            if (success) {
                job.endJob();   
            }
        }
    } catch (IOException ex) {
        Logger.getLogger(OrderCreateController.class.getName()).log(Level.SEVERE, null, ex);
    }


}

1 个答案:

答案 0 :(得分:0)

名为“ showPrintDialog”的行以其所有者为构建订单文档的阶段。

但是,我现在重新阅读“ showPrintDialog”的用法,我认为它应该指的是我的主要阶段,当我进行此更改时,该代码可在Windows和Mac上使用。

我对于上面的代码为什么首先在Mac上起作用感到有些疑惑,这让我不知所措,无法在Windows上找到它作为解决方案,因此,如果有人对此有任何想法,我将保留此代码。几天。