我有一个对话框,在对话框中有一个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( );
}
}
});
当我的对话框打开时,打印按钮旁边有一个文本框。我可以在文本框中输入内容,选择打印按钮并选择我的本地打印机,然后打印文本框的内容。
我想弄清楚如何打印出表而不是文本框 这可能吗?
答案 0 :(得分:1)
我认为你在寻找
Control.class
public boolean print (GC gc)
答案 1 :(得分:0)
也许您可以从GC
窗口小部件创建Table
并使用GC#copyArea(Image, int, int)
创建要打印的表格图像。
如果表格中有滚动条并且并非所有数据都可见,则可能需要做一些额外的工作来创建多个图像并将它们拼接在一起。希望这会有所帮助。