如何创建JFace对话框的屏幕截图进行打印?

时间:2014-02-24 13:49:18

标签: java eclipse-plugin swt jface

我目前正在开发一个eclipse插件,向用户显示一个条目表。

如果用户双击一个tablerow,则会打开一个自定义JFace-Dialog,用户可以在其中打印或取消该对话框。

如何将对话框的屏幕截图创建为图像?

我现在尝试给我一个小矩形。

    PrintDialog dialog = new PrintDialog(this.getShell(), SWT.NONE);
    PrinterData data = dialog.open();
    if(data == null)
    {
        return;
    }

    GC gc = new GC(this.getShell().getDisplay());
    final Image image = new Image(this.getShell().getDisplay(), this.getShell().getBounds());
    gc.copyArea(image, this.getShell().getBounds().x, this.getShell().getBounds().y);
    gc.dispose();

    Printer printer = new Printer(data);
    if(printer.startJob("Print"))
    {

        GC g = new GC(printer);

        if(printer.startPage())
        {
            g.drawImage(image, 0, 0);
        }

        g.dispose();
        printer.endPage();


    }
    printer.endJob();
    printer.dispose();

1 个答案:

答案 0 :(得分:0)

问题在于订单。应首先创建图像。 我没有意识到屏幕截图大小是正确的,但覆盖了PrinterDialog。

GC gc = new GC(this.getShell().getDisplay());
final Image image = new Image(this.getShell().getDisplay(),this.getShell().getBounds());
gc.copyArea(image, this.getShell().getBounds().x, this.getShell().getBounds().y);
gc.dispose();    

PrintDialog dialog = new PrintDialog(this.getShell(), SWT.NONE);
PrinterData data = dialog.open();
if(data == null)
{
    return;
}

Printer printer = new Printer(data);
if(printer.startJob("Print"))
{

    GC g = new GC(printer);

    if(printer.startPage())
    {
        g.drawImage(image, 0, 0);
    }

    g.dispose();
    printer.endPage();


}
printer.endJob();
printer.dispose();