Как избавиться от набора шрифтов 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.