首页 > 解决方案 > 如何打印 TextArea 的内容?

问题描述

所以目前我正在尝试为我的记事本应用程序制作打印功能。我已经有一种工作打印功能,但它不仅打印写入其中的字符串,还打印完整的 TextArea。

我已经尝试让它只打印一个字符串,但 PrintJob 无法处理它,因为它需要实际的 TextArea,文本被写入其中。

我目前的印刷品:

public void doPrint() {
        String toPrint = writeArea.getText();
        printSetup(writeArea, Main.primaryStage);
    }

    private final Label jobStatus = new Label();

    private void printSetup(Node node, Stage owner)
    {
        // Create the PrinterJob
        PrinterJob job = PrinterJob.createPrinterJob();

        if (job == null)
        {
            return;
        }

        // Show the print setup dialog
        boolean proceed = job.showPrintDialog(owner);

        if (proceed)
        {
            print(job, node);
        }
    }

    private void print(PrinterJob job, Node node)
    {
        // Set the Job Status Message
        jobStatus.textProperty().bind(job.jobStatusProperty().asString());

        // Print the node
        boolean printed = job.printPage(node);

        if (printed)
        {
            job.endJob();
        }
    }

我想要的:只显示字符串的打印,就像您尝试打印某些东西时任何其他记事本应用程序一样

我目前得到的:带框架的全文区域。

标签: javafxprintingtextarea

解决方案


正如我在评论中提到的,您可以将其包装成文本,但由于某种原因第一行显示不正确。

解决方案是使用标签,而不是像:

printSetup(new Label(toPrint), Main.primaryStage);

在此处输入图像描述


推荐阅读