我正在编写一个小型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);
}
}
答案 0 :(得分:0)
名为“ showPrintDialog”的行以其所有者为构建订单文档的阶段。
但是,我现在重新阅读“ showPrintDialog”的用法,我认为它应该指的是我的主要阶段,当我进行此更改时,该代码可在Windows和Mac上使用。
我对于上面的代码为什么首先在Mac上起作用感到有些疑惑,这让我不知所措,无法在Windows上找到它作为解决方案,因此,如果有人对此有任何想法,我将保留此代码。几天。