Как избавиться от набора шрифтов SWT на ярлыке Draw2D?

В редакторе ГЭФ у меня есть следующее 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 Label, а не SWT Widget. Как я могу убедиться, что страшную ошибку можно обойти?

2 ответа

Решение

Помимо решения Baz для создания шрифта в качестве статического поля, хорошим решением будет использование JFace FontRegistry, как подробно описано в этом блоге странной оптики.

Если вы хотите сохранить и повторно использовать все свои ресурсы (изображения, шрифты, цвета и т. Д.) В одном месте, а не использовать реестры, следуйте этому классу Windows Builder.

http://code.google.com/p/goclipse/source/browse/trunk/goclipse-n/src/org/eclipse/wb/swt/SWTResourceManager.java?r=445

Другие вопросы по тегам