我有一个Java小程序,其中必须显示大量的项目(字典条目)。用户需要能够选择列表中的各个项目,因此将其实现为JList。生成列表的速度非常快,直到我决定通过使用HTML格式化单个项目来使显示更具美感。现在,列表看起来很漂亮,但是每次用户访问字典时都需要10到15秒的时间来生成它(不格式化,它几乎立即发生)。我想我可以通过在用户首次进入应用程序时生成列表,并根据需要隐藏和取消隐藏列表来提高性能。但是,我想知道是否有更好的方法。也许是一种更有效的方式来生成列表。
这是变慢发生的代码部分(在C和D的显示之间):
DefaultListModel dictCodeModel = new DefaultListModel(); System.out.println("C"); while (e.hasMoreElements()) { String currentEntry = ""; DEntry dentry = (DEntry) e.nextElement(); if (!filter) dictCodeModel.addElement(dentry.theToken); // tokens have embedded html tags } System.out.println("D");
如您所见,这非常简单。当“ theToken”格式化为HTML时,我得到了真正的性能提升。我有什么想法可以解决这个问题?
谢谢,
您使用哪种HTML格式?如果只是文本样式(字体,颜色),则可以使用JLabel,相应地设置其属性,然后将其设置ListCellRenderer为JList。
JLabel
ListCellRenderer
JList