textarea的内容到打印机

时间:2014-10-29 23:59:58

标签: java swing printing textarea

我可以使用下面的语句轻松打印JTable的内容。但是,这不适用于打印textarea组件的内容。是否有一种简单的方法来打印textarea组件的内容?我在网上看到了一些使用多个类的相当令人困惑的例子。但我正试图找到一种更简单的方法。

我在原始发布后24小时内添加了第二区代码。请注意,它可能会产生错误,但会产生错误“添加对打印(图形)的争论”。如何修改代码?

table.print(JTable.PrintMode.NORMAL, header, footer);




JButton btnNewButton_7 = new JButton("Print");
    btnNewButton_7.addActionListener(new ActionListener() {
    @Override
        public void actionPerformed(ActionEvent arg0) {  

        try{
            boolean complete = textArea_2.print();
            //The above line reads the error "Add argument to match print(Graphics)"
            if(complete){
                JOptionPane.showMessageDialog(null,  "Printjob Finished", "Report",
                        JOptionPane.INFORMATION_MESSAGE);
            }else{
                JOptionPane.showMessageDialog(null, "Printing", "Printer", JOptionPane.ERROR_MESSAGE);
                }
            }catch(PrinterException e){JOptionPane.showMessageDialog(null, e);
            }



        }

    });

1 个答案:

答案 0 :(得分:1)

Google和JavaDocs是您的朋友

JTextArea#print

  

显示打印对话框的便捷打印方法,然后   以交互模式打印此JTextComponent,没有标题或   页脚文字。注意:此方法会阻止,直到打印完成。注意:在   无头模式,不会显示任何对话框。

     

此方法调用全功能打印方法来执行   印刷。

     

返回:
为true,除非用户取消打印

JTextArea#print(MessageFormat headerFormat, MessageFormat footerFormat)

  

显示打印对话框的便捷打印方法,然后   以指定的交互模式打印此JTextComponent   页眉和页脚文本。注意:此方法会阻止打印   完成。注意:在无头模式下,不会显示任何对话框。

     

此方法调用全功能打印方法来执行打印。

     

参数:
headerFormat - MessageFormat中的文本,用作   标题,或null为无标题
footerFormat - 文本,在   MessageFormat,用作页脚,或null为无页脚
  返回: true,除非用户取消打印

JTextArea#print(MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintService service, PrintRequestAttributeSet attributes, boolean interactive) throws PrinterException

......你可以自己看一下,发帖很长......

JTextArea#getPrintable(MessageFormat headerFormat, MessageFormat footerFormat)

  

返回用于打印此内容的Printable   JTextComponent的。返回的Printable打印文档   在屏幕上除了重新格式化以适合纸张。归来了   Printable可以包装在另一个Printable中以便创建   复杂的报告和文件。返回的Printable共享   使用此JTextComponent的文档。这是责任   开发人员确保文档在此期间不会发生变异   使用可打印。文档时,打印行为未定义   在印刷过程中发生了变异。

     

页面页眉和页脚文本可以通过提供添加到输出中   MessageFormat参数。打印代码从中请求字符串   格式,提供可包含在内的单个项目   格式化字符串:表示当前页码的整数。

     

打印时返回的Printable格式化文档内容   适当的页面大小。正确的换行包装   所有页面的可成像宽度必须相同。看到   PageFormat.getImageableWidth()。

     

此方法是线程安全的,但大多数Swing方法都不是。   有关更多信息,请参阅如何使用线程。

     

返回的Printable可以打印在任何线程上。

     

这个实现返回Printable执行所有绘画   事件调度线程,无论它使用什么线程。

     

参数:
headerFormat - MessageFormat中的文本,用作   标题,或null为无标题
footerFormat - 文本,在   MessageFormat,用作页脚,或null为无页脚
  返回:
用于打印此内容的Printable   的JTextComponent

对我来说效果很好......

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PrinterException;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestPrint {

    public static void main(String[] args) {
        new TestPrint();
    }

    public TestPrint() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JTextArea ta = new JTextArea(20, 100);
                try (FileReader reader = new FileReader(new File("C:/Script.txt"))) {
                    ta.read(reader, ta);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }

                JButton print = new JButton("Print");
                print.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        MessageFormat header = new MessageFormat("Star Wars IV A new Hope");
                        MessageFormat footer = new MessageFormat("Page {0}");
                        try {
                            ta.print(header, footer);
                        } catch (PrinterException ex) {
                            ex.printStackTrace();
                        }
                    }
                });

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new JScrollPane(ta));
                frame.add(print, BorderLayout.SOUTH);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}