Java 设置SWT外壳的默认字体

Java 设置SWT外壳的默认字体,java,user-interface,swt,Java,User Interface,Swt,有没有办法为整个Shell设置默认字体,以便任何新控件都使用相同的字体 似乎现在我必须为我创建的每个控件设置字体,这导致了太多的冗余。默认使用的字体是由平台选择的(请参阅中的其他信息),因此不可能为所有小部件设置默认字体,如果您想这样做,您必须“手动”完成 您为什么要更改默认字体?没有更改默认字体大小的api 然而,我们可以使用类阴影副作用来实现这一点。例如(osx),复制了一个源代码org.eclipse.swt.internal.cocoa.NSFont,并更新该方法 public stat

有没有办法为整个Shell设置默认字体,以便任何新控件都使用相同的字体


似乎现在我必须为我创建的每个控件设置字体,这导致了太多的冗余。

默认使用的字体是由平台选择的(请参阅中的其他信息),因此不可能为所有小部件设置默认字体,如果您想这样做,您必须“手动”完成


您为什么要更改默认字体?

没有更改默认字体大小的api

然而,我们可以使用类阴影副作用来实现这一点。例如(osx),复制了一个源代码org.eclipse.swt.internal.cocoa.NSFont,并更新该方法

public static NSFont systemFontOfSize(double fontSize) {
    // hacking it by class shadowing
    fontSize = 24;
    long result = OS.objc_msgSend(OS.class_NSFont, OS.sel_systemFontOfSize_, fontSize);
    return result != 0 ? new NSFont(result) : null;
}
在SWT得到结果之前,我们重新分配了更大的字体大小


这是黑客攻击,不建议在生产环境中使用。

很抱歉不够清晰,但我有兴趣更改字体大小。默认值太小,我希望有一个pref,可以让我在整个应用程序中随意修改它。我担心,这是一样的。。在SWT中,通过设置不同大小的新字体来设置字体大小。。