gpt4 book ai didi

Javafx 不检测可用打印机的更改

转载 作者:行者123 更新时间:2023-11-30 08:35:02 24 4
gpt4 key购买 nike

我正在开发一个涉及打印机的 JavaFX 应用程序。但是我需要制作一个更新按钮,以便应用程序可以在应用程序运行时检测最近创建或删除的打印机(断开连接或连接)。

附言:

Printer.getAllPrinters() 得到了我想要的,但它需要在检测到更改之前重新启动应用程序,这意味着我的更新按钮没有用。

编辑 1:

public void updateAvailablePrinters() {
printers = FXCollections.observableArrayList();
ObservableSet<Printer> allPrinters = Printer.getAllPrinters();
allPrinters.forEach(printer -> printers.add(printer)); // printers is a field variable
}

最佳答案

您可以尝试使用 lookupPrintServices method javax.print.PrintServiceLookup 而不是 JavaFX Printer 来显示可用的打印机服务。

我只是使用以下代码片段来获取可用打印机的列表,它似乎在 Application 运行时检测到添加/删除的打印机。

System.out.println("Print services: " + printServices.length);

for (PrintService printer : printServices)
System.out.println("Printer: " + printer.getName());

或者如果您只是想让用户能够在实际打印之前选择打印机,您可以使用 showPrintDialog PrinterJob 对话框中的打印机列表也被刷新:

PrinterJob job = PrinterJob.createPrinterJob();
if (job != null && job.showPrintDialog(stage)){
boolean success = job.printPage(stage.getScene().getRoot());
if (success) {
job.endJob();
}
}

关于Javafx 不检测可用打印机的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38470568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com