Swing load可用字体系列会降低性能
在我添加这段代码后,我将加载可用的字体系列并将其添加到combobox中Swing load可用字体系列会降低性能,swing,performance,Swing,Performance,在我添加这段代码后,我将加载可用的字体系列并将其添加到combobox中 GraphicsEnvironment ge = GraphicsEnvironment. getLocalGraphicsEnvironment(); String[] fontNames = ge.getAvailableFontFamilyNames(); 当我触发页面时,显示页面的速度非常慢,大约需要7秒钟。我把它拿出来后,它就像平常一样好。有没有解决方案,有没有人面临同样的问题?只要在应用程序启动时在后台
GraphicsEnvironment ge = GraphicsEnvironment.
getLocalGraphicsEnvironment();
String[] fontNames = ge.getAvailableFontFamilyNames();
当我触发页面时,显示页面的速度非常慢,大约需要7秒钟。我把它拿出来后,它就像平常一样好。有没有解决方案,有没有人面临同样的问题?只要在应用程序启动时在后台()加载即可。当用户打开页面时,它将被加载 延迟是因为
getAvailableFontFamilyNames
为它能找到的每种字体创建一个1磅字体。它允许JVM区分它可以使用的字体和看起来可能是字体的东西
最好的方法是在SwingWorker
中调用它,然后从done
方法更新组合
更新:
海报的代码更新为使用通用SwingWorker。
注意:我返回名称数组,因为它消除了同步的需要
SwingWorker aWorker<String[],Void> = new SwingWorker<String[],Void>() {
protected void done() {
String[] fontNames = get();
for (int i = 0; i < fontNames.length; i++)
fontFamily.addItem(fontNames[i]);
}
@Override
protected String[] doInBackground() throws Exception {
GraphicsEnvironment env = GraphicsEnvironment .getLocalGraphicsEnvironment();
return env.getAvailableFontFamilyNames();
}
};
aWorker.run();
SwingWorker aWorker=新的SwingWorker(){
受保护的void done(){
字符串[]fontNames=get();
对于(int i=0;i
嗨,我是这样做的,对吗?SwingWorker aWorker=new SwingWorker(){String[]fontNames=null;public Object construct(){return null;}protected void done(){for(int i=0;i