java—在javafx中使用printerjob时如何显示完整表?

d5vmydt9  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(335)

我有一个只有3行5列的表,当打印它打印所有3行,但只有3列。这是我的密码:

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();

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

这是按钮:

printButton.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent event) {
            print(tableView);
        }
    });

我应该怎么做才能看到所有列?我用的是旧的hp laserjet professional p1102打印机。

kqhtkvqz

kqhtkvqz1#

javafx8printapi:如何正确设置可打印区域这是我找到答案的地方。我只需要改变身高:

double scaleX
    = pageLayout.getPrintableWidth() / node.getBoundsInParent().getWidth();
double scaleY
    = pageLayout.getPrintableHeight() / node.getBoundsInParent().getHeight();
Scale scale = new Scale(scaleX, scaleY)//insted of scaleY i put number 1

所以它不会把table的高度拉得满纸都是。

相关问题