2012-11-01 79 views
0

我有一個對話框,在對話框中有一個tableviewer,它顯示用戶操作的結果。我創建了一個具有打印按鈕的方法。打印代碼包括我從示例中找到的示例代碼。SWT - PrintDialog打印表格/表格查看器的內容

final Text t = new Text(composite, SWT.BORDER | SWT.MULTI); 
    Button localPrintersButton = new Button(composite, SWT.PUSH); 
    localPrintersButton.setText("Print Results"); 
    localPrintersButton.addSelectionListener(new SelectionAdapter() { 
     public void widgetSelected(SelectionEvent e) { 
      PrintDialog printDialog = new PrintDialog(Display.getCurrent().getActiveShell(), SWT.NONE); 
      printDialog.setText("Print"); 
      PrinterData printerData = printDialog.open(); 
      if(!(printerData==null)) 
      { 
       Printer p = new Printer(printerData); 
       p.startJob("PrintJob");  
       p.startPage(); 
       Rectangle trim = p.computeTrim(0, 0, 0, 0); 
       Point dpi = p.getDPI(); 
       int leftMargin = dpi.x + trim.x; 
       int topMargin = dpi.y/2 + trim.y; 
       GC gc = new GC(p); 
       Font font = gc.getFont(); 
       String printText= t.getText(); 
       Point extent = gc.stringExtent(printText); 
       gc.drawString(printText, leftMargin, topMargin + 
         font.getFontData()[0].getHeight()); 
       p.endPage(); 
       gc.dispose(); 
       p.endJob(); 
       p.dispose(); 
      } 
     } 
    }); 

當我的對話框打開時,打印按鈕旁邊有一個文本框。我可以在文本框中輸入內容,選擇打印按鈕並選擇本地打印機,然後打印文本框的內容。

我想弄清楚如何打印出表格而不是文本框 這可能嗎?

回答

1

我認爲你正在尋找

Control.class 
public boolean print (GC gc) 
+0

我很抱歉,但你給我多一點你的答案的細節? – jkteater

0

或許你可以從Table控件創建GC並使用GC#copyArea(Image, int, int)創建表的圖像進行打印。

如果表格具有滾動條並且並非所有數據都可見,則可能需要做一些額外的工作來創建多個圖像並將它們縫合在一起。希望這可以幫助。