在 JavaFX 中打印 TableView 显示 junk/other 语言字符
Printing TableView in JavaFX displays junk/other language characters
我正在尝试在 JavaFX 应用程序中打印 TableView。当我将 TableView 直接传递给 PrinterJob.printPage(TableView) 时,文本数据使用其他语言,但视图显示正常,即屏幕上显示英文。
...
final TableView addItemTableView = (TableView) tabAnchorpane.getChildren().get(1);
Printer printer = Printer.getDefaultPrinter();
PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
double scaleX = pageLayout.getPrintableWidth() / addItemTableView.getBoundsInParent().getWidth();
Scale scale = new Scale(scaleX, scaleX);
addItemTableView.getTransforms().add(scale);
PrinterJob printerJob = PrinterJob.createPrinterJob();
if (printerJob.showPrintDialog(stage.getOwner()) && printerJob.printPage(pageLayout, addItemTableView)) {
printerJob.endJob();
}
...
TableView 填充了任务中的数据class
public class Task implements Serializable {
private static final long serialVersionUID = 2L;
private transient StringProperty description;
private transient IntegerProperty priority;
private transient ObjectProperty<LocalDate> dueDate;
private transient StringProperty status;
private transient ObjectProperty<LocalDate> startDate;
private transient ObjectProperty<LocalDate> endDate;
...
}
问题似乎与 JDK 7 有关。当我切换到 JDK 10 时,问题已解决。打印预览页面按预期显示为英文。
我正在尝试在 JavaFX 应用程序中打印 TableView。当我将 TableView 直接传递给 PrinterJob.printPage(TableView) 时,文本数据使用其他语言,但视图显示正常,即屏幕上显示英文。
...
final TableView addItemTableView = (TableView) tabAnchorpane.getChildren().get(1);
Printer printer = Printer.getDefaultPrinter();
PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
double scaleX = pageLayout.getPrintableWidth() / addItemTableView.getBoundsInParent().getWidth();
Scale scale = new Scale(scaleX, scaleX);
addItemTableView.getTransforms().add(scale);
PrinterJob printerJob = PrinterJob.createPrinterJob();
if (printerJob.showPrintDialog(stage.getOwner()) && printerJob.printPage(pageLayout, addItemTableView)) {
printerJob.endJob();
}
...
TableView 填充了任务中的数据class
public class Task implements Serializable {
private static final long serialVersionUID = 2L;
private transient StringProperty description;
private transient IntegerProperty priority;
private transient ObjectProperty<LocalDate> dueDate;
private transient StringProperty status;
private transient ObjectProperty<LocalDate> startDate;
private transient ObjectProperty<LocalDate> endDate;
...
}
问题似乎与 JDK 7 有关。当我切换到 JDK 10 时,问题已解决。打印预览页面按预期显示为英文。