SWT - PrintDialog打印表/表查看器的内容

时间:2012-11-01 15:19:09

标签: java printing swt

我有一个对话框,在对话框中有一个tableviewer,显示用户操作的结果。我创建了一个具有打印按钮的方法。打印代码包括我从示例中找到的示例代码。

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( );
          }
       }
   }); 

当我的对话框打开时,打印按钮旁边有一个文本框。我可以在文本框中输入内容,选择打印按钮并选择我的本地打印机,然后打印文本框的内容。

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

2 个答案:

答案 0 :(得分:1)

我认为你在寻找

Control.class
public boolean print (GC gc)

答案 1 :(得分:0)

也许您可以从GC窗口小部件创建Table并使用GC#copyArea(Image, int, int)创建要打印的表格图像。

如果表格中有滚动条并且并非所有数据都可见,则可能需要做一些额外的工作来创建多个图像并将它们拼接在一起。希望这会有所帮助。