Mic*_*ers 11
在某种程度上,是的.您可以创建一个自定义ListModel,使用该getElementAt(int index)方法加载正确的值(如果尚未加载).请参阅Javadocs中的示例JList:
// This list model has about 2^16 elements. Enjoy scrolling.
ListModel bigData = new AbstractListModel() {
public int getSize() { return Short.MAX_VALUE; }
public Object getElementAt(int index) { return "Index " + index; }
};
Run Code Online (Sandbox Code Playgroud)
我解决了 我错过了JList API文档顶部讨论的解决方案.
在我在该主题的另一个答案中发布的示例源代码中,在创建JList之后添加此行(和注释):
// Tell JList to test rendered size using this one value rather
// than every item in ListModel. (Much faster initialization)
myList.setPrototypeCellValue("Index " + Short.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)
问题是,默认情况下,JList正在访问整个ListModel中的每个项目,以在运行时确定必要的显示大小.上面添加的行会覆盖默认值,并告诉JList只检查传递的一个值.该值充当模板(原型),用于调整JList的显示大小.
看到:
http://java.sun.com/javase/6/docs/api/javax/swing/JList.html#prototype_example
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |