我正在使用netbeans中的javafx fxml项目构建应用程序。 作为其中一部分,我在控制器中打印一个节点。为此,我正在改变节点布局,以便它可以适合半页。现在打印后,如何返回原始布局。更具体地说,有没有办法初始化所有设置。我在Javafx和Java方面的专业知识仅限于剪切/粘贴:(如果给出了代码示例,请欣赏。链接Best way to initialize GUI in JavaFX?似乎包含答案,但我无法理解。
public void print(final Node node) {
Printer printer = Printer.getDefaultPrinter();
PageLayout pageLayout = printer.createPageLayout(Paper.NA_LETTER, PageOrientation.PORTRAIT, Printer.MarginType.DEFAULT);
double width = node.getBoundsInParent().getWidth();
double height = node.getBoundsInParent().getHeight();
double scaleX = pageLayout.getPrintableWidth() / node.getBoundsInParent().getWidth();
double scaleY = pageLayout.getPrintableHeight() /(2* node.getBoundsInParent().getHeight());
node.getTransforms().add(new Scale(scaleX, scaleY));
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null) {
boolean success = job.printPage(node);
if (success) {
job.endJob();
}
}
node.getTransforms().add(new Scale(width, height)); //This is not working
}
答案 0 :(得分:0)
您似乎不需要重新初始化所有内容;您只需要撤消对打印所做的更改。为此,请保留对比例变换的引用,并在完成后将其删除:
即。替换
node.getTransforms().add(new Scale(scaleX, scaleY));
带
Scale scale = new Scale(scaleX, scaleY);
node.getTransforms().add(scale);
并替换
node.getTransforms().add(new Scale(width, height));
带
node.getTransforms().remove(scale);