【问题标题】:How do I print the content of a TextArea?如何打印 TextArea 的内容?
【发布时间】:2019-08-29 09:12:19
【问题描述】:

所以目前我正在尝试为我的记事本应用程序制作打印功能。我已经有一种工作打印功能,但它打印完整的 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();
        }
    }

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

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

【问题讨论】:

  • 您可以将TextArea的文本包装成一个Text并打印出来。喜欢:printSetup(new Text(writeArea), Main.primaryStage); 我注意到的一个问题,第一行不可见,IDK 为什么。也许你也可以尝试一下,找出原因。
  • 您好,感谢您的建议。但不知何故,我无法将 new Text 应用到我的写作区域......我只是迟钝还是根本不起作用?

标签: javafx printing textarea


【解决方案1】:

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

解决方案是使用标签,例如:

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

【讨论】:

  • 您好!谢谢您的帮助!它确实有效,至少有点。我不得不进一步调整它,但这是我使用的解决方案:String toPrint = writeArea.getText(); printSetup(new Label(toPrint), Main.primaryStage); 这是 janky af,但它有效。再次感谢。
  • 我看不出有什么不同,但我很高兴能帮到你 ;)
猜你喜欢
  • 2014-12-25
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2021-07-04
  • 2014-06-04
  • 2020-09-08
  • 2020-04-13
  • 2020-08-26
相关资源
最近更新 更多