【问题标题】:Why printed me one line in SWT Eclipse (Text). I wanted to print multi line in my Text为什么在 SWT Eclipse (Text) 中打印了我一行。我想在我的文本中打印多行
【发布时间】:2019-06-09 16:14:03
【问题描述】:

为什么要在 SWT Eclipse(文本)中打印我一行。我想在我的文本中打印多行。那是我的代码。从我的打印机中,我得到了一行消息,而不是打印中的多行

Button btnPrint = new Button(shell, SWT.NONE);
    btnPrint.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {

             PrintDialog printDialog = new PrintDialog(shell, SWT.MULTI| SWT.BORDER );
                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 = text.getText();
                  Point extent = gc.stringExtent(printText);

                  gc.drawString(printText, leftMargin, topMargin+ font.getFontData()[0].getHeight());
                  p.endPage();
                  gc.dispose();
                  p.endJob();
                  p.dispose();
                }
        }
    });

【问题讨论】:

    标签: java eclipse swt


    【解决方案1】:

    gc.drawString 不查找行分隔符。

    使用gc.drawText:

    public void drawText(String string, int x, int y)
    

    确实会查找行分隔符(和制表符)。或者使用

    public void drawText(String string, int x, int y, int flags)
    

    并为flags 值指定SWT.DRAW_DELIMITER

    【讨论】:

      猜你喜欢
      • 2022-07-26
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      相关资源
      最近更新 更多