我有一个jcombobox,用于选择字体。为了在用户进行选择时预览字体,我编写了一个自定义listcellrenderer:
public class FontListCellRenderer implements ListCellRenderer<String>{
private ListCellRenderer<Object> defaultRenderer;
@SuppressWarnings("unchecked")
public FontListCellRenderer(){
this.defaultRenderer = (ListCellRenderer<Object>) new JComboBox<Object>().getRenderer();
}
@Override
public Component getListCellRendererComponent(JList<? extends String> list,
String value, int index, boolean isSelected, boolean cellHasFocus) {
Component returnVal = this.defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
returnVal.setFont(new Font((String) value, returnVal.getFont().getStyle(), returnVal.getFont().getSize()));
return returnVal;
}
}
然而,在使用这个listcellrenderer初始化jcombobox时,我注意到性能受到了极大的影响。经过进一步的调查,我发现当我用setselecteditem()为我的项目设置默认值时,我的listcellrenderer被许多字体调用。
目前,我已经更改了我的代码设置listcellrenderer最后,但我想知道为什么会发生这种情况?即使我的项目在屏幕上(现在还没有),listcellrenderer也不会像jcombobox中显示的那样呈现选中的项目。即使是,为什么要为未选中的项目调用它?
暂无答案!
目前还没有任何答案,快来回答吧!