2009-12-04 97 views
0

我似乎無法弄清楚如何發送文本框控件以Java打印。將文本框控件發送到打印機?

本程序創建詞搜索難題,現在我想打印它們。

我只是想打印文本框控件,因爲它是...但我不得不嘗試其他方法如下。

我的第一個問題是當我試圖發送它txtEasy.getText()它試圖打印 一個非常長的字符串。這不是我想要的。所以我不得不採取一個非常長的字符串 並像這樣解析出來。行數爲15的20行。不幸的是,你不能在這裏看到。但它是一個15乘20箱子。

 
    M S N O I T I S O P M O C L G 
    D R B P U D C K S Q G B E I Q 
    C D I N M B P I U N P M J J U 
    T N L I N C V D Q B W I U A U 
    T O R N T F J O D N G T E L G 
    B R K C O M M S W G H T S A N 
    S I G U K X U X S E P I E Q C 
    T G C B O X H J N B D T T J P 
    I I A A R Q Y C S W I F O L M 
    M N R T I A E L P S P D Q O U 
    U A P E H F I T S O F Q N L P 
    L L H D O Q F A O A G T Q A B 
    A S S R W T C L T N P G E N S 
    T X T Y P O V T I E W L Q C F 
    I H S E J F E M L A D N D A E 
    N W K T Q N E I I K I J V S I 
    G F Y H S E E P I Y J U S H R 
    D F V N D R D I B E F S R I U 
    H U Y E V S F O E Q J X V R N 
    V V R G R L G Q S B M F G E J 

我的代碼如下。

因爲它是目前的設置,我發送文本打印機類作爲txtEasy.getText()

我現在用這種方法遇到的問題是字體沒有正確對齊難題。

所以我的兩個問題......

1)有沒有辦法來發送文本框控件到打印機嗎?

2)有沒有一種格式化字符串字體的方法?字體大小造成我的不平穩打印。

謝謝你的幫助。

private void btnEasyPrintActionPerformed(java.awt.event.ActionEvent evt) {            

     //System.out.println(txtEasy.getText()); 
     PrinterJob job = PrinterJob.getPrinterJob(); 
     PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
     PageFormat pf = job.pageDialog(aset); 
     job.setPrintable(new PrintPuzzle(txtEasy.getText()), pf); 
     boolean ok = job.printDialog(aset); 
     if (ok) { 
      try { 
       job.print(aset); 
      } catch (PrinterException ex) { 
      /* The job did not successfully complete */ 
      } 
     } 



//******** THE PRINT CLASS ******** 

import java.awt.*; 
import java.awt.print.*; 

public class PrintPuzzle implements Printable 
{ 
    String toPrint; 
    String formatedToPrint; 

    public PrintPuzzle(String item) 
    { 
     toPrint = item; 
     //toPrint = item; 
     //formatedToPrint = formatBoardToPrint(toPrint); 

    } 
    public int print(Graphics g, PageFormat pf, int page) throws 
                PrinterException 
    { 

     if (page > 0) 
     { 
      return NO_SUCH_PAGE; 
     } 

     /* User (0,0) is typically outside the imageable area, so we must 
     * translate by the X and Y values in the PageFormat to avoid clipping 
     */ 
     Graphics2D g2d = (Graphics2D)g; 
     g2d.translate(pf.getImageableX(), pf.getImageableY()); 

     /* Now we perform our rendering */ 

     String paintMe = ""; 
     int YPosition = 20; 
     int first = 2; 
     int last = 46; 

     System.out.println(toPrint); 
     System.out.println("String Length is :" + toPrint.length()); 
     for(int i = 0;i < 20;i++) 
     { 
      paintMe = toPrint.substring(first, last); 
      paintMe. 
      System.out.print(paintMe + "First Position : " + first + " Last Position : " + last + " YPosition : " + YPosition); 

      g.drawString(paintMe, 20, YPosition); 

      System.out.println(); 
      first += 46; 
      last += 46; 
      YPosition += 10; 

     }//end for 

     //g.drawString(toPrint, 20, 20); 
     //g.drawString(toPrint, 20, 30); 


     /* tell the caller that this page is part of the printed document */ 
     return PAGE_EXISTS; 
    } 

} 

回答

1

您的print()函數是否實際打印矩陣,只是未正確對齊?

調用g2d.setFont()並設置一個像Courier這樣的固定寬度的字體,這樣做會正確。

您也可以調用JTextBox.print(),它將顯示一個對話框並打印內容。 More info here.

+0

謝謝! g2d.setFont()正是我所需要的。長話短說,當我將文本框繪製到打印機上時,文字對齊方式不能正確排列,因此顯然有些文字比其他文字更大/更小。我需要指定一個使字符使用相同數量空間的字體。 – 2009-12-06 05:08:59

相關問題