【问题标题】:How can I print content of JTextPane如何打印 JTextPane 的内容
【发布时间】:2014-03-15 19:34:27
【问题描述】:

我的代码应该打印我的 JTextPane 控件的内容,但页面上没有打印任何内容。页面为空白。这是我的代码:

 @Override
        public void actionPerformed(ActionEvent arg0) {
            // kod za printanje sadrzaja iz JTextPane-a
            /*
            PrinterJob job = PrinterJob.getPrinterJob();
            job.setPrintable(new Editor());
            boolean ok = job.printDialog();
            if(ok){
                try{
                    job.print();
                }
                catch(PrinterException pex){
                    JOptionPane.showMessageDialog(new Editor(), "Greška pri printanju dokumenta!", "Poruka", JOptionPane.INFORMATION_MESSAGE);
                }
                */
            try{
                //System.out.println(tekst1.getText());
                // PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
                  //  attr_set.add(MediaSizeName.ISO_A4);
                tekst1.setContentType("text/html");


                tekst1.print();
            }
            catch(Exception pex){
                pex.printStackTrace();
            }


        }
    };

谁能帮帮我!?

【问题讨论】:

  • 文本窗格中实际上是否加载了任何内容?
  • 更多关于 tekst1 对象的信息会很好。那是你的文本窗格吗?如果是这样,我认为您错误地调用了print,请查看documentation
  • 是的,对象 tekst1 是我的 JTextPane

标签: java eclipse swing printing jtextpane


【解决方案1】:

由于您已将内容类型定义为text/html,因此请在设置 HTML 编辑器工具包后尝试。

jTextPane.setEditorKit(new HTMLEditorKit());

或者您可以通过将内容类型设置为 text/pain 来尝试不使用任何编辑器工具包

jTextPane.setContentType("text/plain");

或删除内容类型。

//jTextPane.setContentType("text/html");

更多信息参见方法JEditorPane.setContentType()的Java文档


带有屏幕截图的示例代码:

注意:打印文件另存为Microsoft XPS Document Writer

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextPane;
import javax.swing.text.html.HTMLEditorKit;

public class PrintJTextPane {
    public static void main(String[] args) {
        JFrame jframe = new JFrame();
        jframe.setSize(500, 200);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JTextPane jTextPane = new JTextPane();

        jTextPane.setEditorKit(new HTMLEditorKit());

        JButton btn = new JButton("Print");
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                try {
                    jTextPane.setContentType("text/html");

                    boolean done = jTextPane.print();
                    if (done) {
                        JOptionPane.showMessageDialog(null, "Printing is done");
                    } else {
                        JOptionPane.showMessageDialog(null, "Error while printing");
                    }
                } catch (Exception pex) {
                    JOptionPane.showMessageDialog(null, "Error while printing");
                    pex.printStackTrace();
                }
            }
        });

        jframe.add(btn, BorderLayout.SOUTH);

        jframe.add(jTextPane);
        jframe.setVisible(true);
    }
}

【讨论】:

  • 这对我不起作用,我想将 JTextPane 的内容发送到本地打印机。
  • 你能把它写成xps文件吗?
  • 可能是打印机设置有问题。请阅读Simple page size setting when printing JTextPane?
  • 我可以把它写成Microsoft OneNote 2010 文件。现在我没有任何打印机连接到我的系统。我将在我的办公室进行测试并确认您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 2021-07-04
  • 2014-06-04
  • 2020-09-08
  • 2020-04-13
  • 2020-08-26
  • 1970-01-01
相关资源
最近更新 更多