2014-10-29 83 views
0

我能夠輕鬆打印JTable的內容,主要通過使用下面的語句。但是,這不適用於打印textarea組件的內容。有沒有簡單的方法來打印textarea組件的內容?我在網上看到了一些使用多個類的令人困惑的例子。但我試圖找到一個更簡單的方法來做到這一點。textarea的內容到打印機

我在原來的POST後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

谷歌和JavaDocs是你的朋友

JTextArea#print

顯示的打印對話框的便捷打印方法,然後 打印此JTextComponent在交互模式下,沒有頁眉或 頁腳文本。注意:此方法阻塞,直到打印完成。注意:在 無頭模式下,不會顯示對話框。

此方法調用全功能打印方法執行 打印。

返回:
真,除非印刷是通過用戶取消

JTextArea#print(MessageFormat headerFormat, MessageFormat footerFormat)

一個顯示打印對話框的便捷打印方法,然後 打印此JTextComponent在交互模式與指定的 頁眉和頁腳文本。注意:此方法阻塞,直到打印完成爲 。注意:在無頭模式下,不會顯示對話框。

此方法調用全功能打印方法來執行打印。

參數:
headerFormat - 文本,在MessageFormat中,用作 頭,或者爲null,無頭
footerFormat - 文本,在 MessageFormat中,用作頁腳,或者爲null,無尾
返回:真實的,除非打印用戶取消

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

...你可以看一個自己,這是長期張貼...

JTextArea#getPrintable(MessageFormat headerFormat, MessageFormat footerFormat)

返回打印用於打印此 JTextComponent的內容。返回的Printable打印文檔,因爲它在屏幕上顯示 ,除了被重新格式化以適應紙張。返回的 Printable可以打包在另一個Printable中,以便創建 複雜的報告和文檔。返回的Printable與此JTextComponent共享 文檔。 開發人員有責任確保文檔在使用此 Printable時不會發生變異。當文檔在打印期間突變時 時打印行爲不確定。

通過提供 MessageFormat參數,可以將頁眉和頁腳文本添加到輸出中。打印代碼請求來自 格式的字符串,提供可能包含在 格式化字符串中的單個項目:表示當前頁碼的整數。

打印時返回的Printable,適當地爲文檔大小格式化文檔內容 。爲了正確換行,所有頁面的可成像寬度必須相同。請參閱 PageFormat.getImageableWidth()。

這種方法是線程安全的,儘管大多數Swing方法都不是。 請參閱如何使用線程獲取更多信息。

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

此實現返回Printable在 事件派發線程上執行所有繪製,無論使用哪個線程。

參數:
headerFormat - 文本,在MessageFormat中,用作 頭,或者爲null,無頭
footerFormat - 文本,在 MessageFormat中,用作頁腳,或者爲null,無尾
返回:
可打印在這 的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); 
      } 
     }); 
    } 

} 
+0

是的,我試過如下:textArea_2.print(新的MessageFormat( 「我的文字成分標題」),新的MessageFormat(「頁腳。頁面 - {0}「),true,null,null,true); 我收到以下錯誤消息:刪除參數以匹配'print(Graphics)' – Daron 2014-10-30 00:24:49

+0

Works對我來說很好。 https://stackoverflow.com/help/mcve),它可以證明你的問題,這會減少混淆和更好的反應 – MadProgrammer 2014-10-30 00:37:00

+0

謝謝你提供的信息和你的時間,我會看看你發送的代碼和信息我需要一點時間來試圖弄明白,明天我會通知你 – Daron 2014-10-30 00:49:23