如何在paintListener

时间:2015-09-23 07:22:12

标签: java fonts swt

我有自定义绘制小部件,我必须绘制一些不同字体大小的文本。 例如:

paintListener = new PaintListener() {
    public void paintControl(PaintEvent e) {
        int verticalOffset = 10;
        Font smallFont = SWTResourceManager.getFont("", 8, SWT.BOLD);
        e.gc.setFont(smallFont);
        String text1 = "test1";
        Point text1Size = e.gc.textExtent(text1);
        e.gc.drawText(text1, 0, e.y - text1Size.y - verticalOffset);

        Font bigFont = SWTResourceManager.getFont("", 12, SWT.NONE);
        e.gc.setFont(bigFont);
        String text2 = "test2";
        Point text2Size = e.gc.textExtent(text2);
        e.gc.drawText(text2, e.x - text2Size.x, e.y - text2Size.y - verticalOffset);
    }
}

我想知道如何垂直对齐这两个文本,或者是否可以计算textExtent返回的区域与字体基线之间的距离。

1 个答案:

答案 0 :(得分:1)

您可以从FontMetrics

获取当前字体的GC
ec.gc.setFont(xxxx);

FontMetrics metrics = e.gc.getFontMetrics();

FontMetricsgetDescent() getHeight() ...方法,可让您调整绘图位置。