您好 :) 我首先使用的是 Java 6。
特征
当您使用 时JComboBox
,您通常可以通过键入字符来选择一个条目。这很好。
问题
不幸的是,如果您的条目是 HTML 字符串,例如"<html><b>foo</b> <i>bar</i></html>"
. 顺便说一句,我主要使用 HTML 来以不同的颜色显示我的条目。
解决办法,不好
所以,为了解决这个问题,我通过改变实现了我自己的 KeySelectionListener JComboBox$DefaultKeySelectionManager
,如果条目以"<html>"
.
这样可行。但是:我错误地认为默认使用的是JComboBox$DefaultKeySelectionManager
. 为什么?因为它只处理输入的第一个字符。对于具有许多以相同字符开头的条目的长列表,这根本不方便。
处理输入框中的所有字符的好方法是BasicComboBoxUI$DefaultKeySelectionManager
(这是默认设置)。问题是,这个与嵌套的 ComboBoxUI 交互。它接受它JList
并调用getNextMatch(prefix, …)
。可悲的是JList.getNextMatch()
不关心 HTML 条目。
我不能简单地将 BasicComboBoxUI 扩展为具有不同的 JList 实现,因为给定的 LAF 决定使用哪个 UI。
有任何想法吗?我猜 Java 7 没有解决这个问题?