java - 如何处理 Draw2D 标签上设置的 SWT 字体?

标签 java swt dispose eclipse-gef draw2d

在 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+ token 的大型模型,这会引发 org.eclipse.swt.SWTError: No more handles。至少我认为(希望)这就是导致错误的原因。

现在我不知道如何处理字体,因为 EditPart 的图形是一个 Draw2D 标签,而不是一个 SWT 部件。我如何确保可以避免可怕的错误?

最佳答案

除了 Baz' solution要使字体成为静态字段,一个好的解决方案是使用 JFace FontRegistry,如 this strangeoptics blog post 中详细介绍。 .

关于java - 如何处理 Draw2D 标签上设置的 SWT 字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20398160/

相关文章:

java - 如何在 JList 上添加滚动条? [JAVA]

java - 你怎么能在这里得到 "SWTException: Invalid thread access"?

c# - 如何从 C# 面板控件中 Dispose() 特定用户控件?

java - 如何在android中的整个应用程序上检测飞行模式

java - 禁用 ProgressMonitor 的对话框关闭

java - jdk 6 的 Node.getTextContent 中的编译错误

.net - 如何处置工厂模式创建的对象

java - 应用程序窗口上的鼠标事件

java - 如何将行标题添加到 JFace TableViewer?

c# - 有没有办法在不关闭 StreamWriter 的情况下关闭其 BaseStream?