我使用带有OwnerDrawLabelProvider的Jface表查看器用于多行行,如何更改字体样式/大小?
答案 0 :(得分:1)
基本上,您只需要获取要使用的字体,并使用measure
和paint
方法在事件GC中进行设置。
这可能类似于:
private static final int TEXT_MARGIN = 3;
@Override
protected void measure(Event event, Object element)
{
String text = ... get the text
Font font = JFaceResources.getFont(JFaceResources.HEADER_FONT);
event.gc.setFont(font);
Point size = event.gc.textExtent(text);
event.width = size.x + 2 * TEXT_MARGIN;
event.height = Math.max(event.height, size.y + 2 * TEXT_MARGIN);
}
@Override
protected void paint(Event event, Object element)
{
String text = ... get the text
Font font = JFaceResources.getFont(JFaceResources.HEADER_FONT);
event.gc.setFont(font);
event.gc.drawText(text, event.x + TEXT_MARGIN, event.y + TEXT_MARGIN, true);
}
这里我使用JFaceResources.getFont
来获取现有的JFace字体之一。您也可以创建自己的字体 - 但只有在每次调用measure
或paint
时不创建它时,请务必执行此操作。