2016-06-25 3 views
3

Итак, у меня есть простая вкладка, которая содержит несколько панелей сетки. После того как u выбрал имя из ListView, данные из базы данных отображаются с правой стороны (проверьте ссылку моего gui). На нем есть кнопка с текстом «Stampaj», на английском «Печать». Когда он нажимается, он печатает правую сторону вкладки (сетка с данными). Моя программа печатает то, что я хочу, но она не печатает ее должным образом (проверьте ссылку после печати).Печать узла в JavaFX

Ссылка моего графического интерфейса (вкладки): https://postimg.org/image/bmtwbhxv5/

Link данных после печати (в формате PDF): https://postimg.org/image/elp9ugvlt/

код метода я печатаю мой узел с:

public void print(final Node node) { 
    PrinterJob job = PrinterJob.createPrinterJob(); 
    Printer printer = Printer.getDefaultPrinter().getDefaultPrinter(); 
    PageLayout pageLayout = 
     printer.createPageLayout(Paper.A4, PageOrientation.PORTRAIT, Printer.MarginType.EQUAL); 
    JobSettings jobSettings = job.getJobSettings(); 
    jobSettings.setPageLayout(pageLayout); 
    boolean printed = job.printPage(node); 
    if (printed) { 
     job.endJob(); 
    } 
} 

сейчас когда я вызываю этот метод, аргументом I forward является GridPane, который содержит ярлыки и другие компоненты, которые относятся к этим данным, показывающим (справа от GUI). Я попытался переключить места с теми GridPanes, которые у меня есть на моей текущей вкладке, и затем он печатает правильно (с самого начала страницы). Я знаю, почему он печатает, как это, но мне интересно, есть ли способ переместить этот текст в начало страницы и напечатать его нормальным без переключения мест и оставить мой графический интерфейс таким, каким он есть?

+0

Это может быть полезно https://dzone.com/articles/introduction-example-javafx-8 – GOXR3PLUS

+0

Я знаю об этой статье, я пробовал ее, но она также меняет размер шрифта в моем графическом интерфейсе, если я помню, и все еще печатает то же самое (только с большим шрифтом). –

ответ

0

Как вы выкладываете GridPanes? Похоже, что вы можете настраивать свойства на своей GridPane, чтобы переместить его вправо на экране, translateX или layoutX, поэтому он корректно печатает, когда вы перемещаете его влево в пользовательском интерфейсе.

Когда вы отправляете его на принтер, у него все еще есть эти свойства, поэтому он перемещает его на странице. Вы можете либо сбросить эти свойства на GridPane перед печатью, либо изменить свое представление, чтобы использовать другой контейнер для GridPanes, поэтому вам не нужно устанавливать их в первую очередь, например, HBox или SplitPane.

Смежные вопросы