【发布时间】:2013-12-05 10:58:20
【问题描述】:
在 GEF 编辑器中,我有以下 EditPart:
public class MyLabelEditPart extends AbstractGraphicalEditPart {
@Override
protected IFigure createFigure() {
return new Label();
}
@Override
protected void refreshVisuals() {
MyModel model = (MyModel) getModel();
Label figure = (Label) getFigure();
EditPart parent = getParent();
Font font = new Font(Display.getCurrent(), "sansserif", 11, SWT.BOLD);
figure.setFont(font);
figure.setForegroundColor(ColorConstants.darkGray);
figure.setText(model.getValueString());
parent.refresh();
}
大多数型号都可以正常工作,但是 - 你已经发现了错误 - 我从不处理字体。因此,对于 10k+ 令牌的大型模型,这会引发 org.eclipse.swt.SWTError: No more handles。至少我认为(希望)这是导致错误的原因。
现在我不知道如何处理字体,因为 EditPart 的图形是 Draw2D 标签,而不是 SWT 小部件。如何确保可以规避可怕的错误?
【问题讨论】:
-
所以您是在一遍又一遍地创建相同的字体,而不是创建
static并重复使用它? -
哎哟!谢谢指点!森林/树木...猜猜使用
FontRegistry将是另一种解决方案。
标签: java swt dispose eclipse-gef draw2d