こんにちは:)私は最初にJava6を使用しています。
特徴
を使用している場合JComboBox
、通常は文字を入力してエントリを選択できます。いいですね。
問題
残念ながら、エントリがHTML文字列の場合、これは機能しません"<html><b>foo</b> <i>bar</i></html>"
。ちなみに、私は主にエントリをさまざまな色で表示するためにHTMLを使用しています。
解決策、悪い
JComboBox$DefaultKeySelectionManager
したがって、これを解決するために、エントリが。で始まる場合は、基本的にすべてのタグを無視して、を変更することにより、独自のKeySelectionListenerを実装しまし"<html>"
た。
それはうまくいきます。しかし:私はデフォルトで使用されるものがであると考えるのは間違っていましたJComboBox$DefaultKeySelectionManager
。なんで?入力された最初の文字のみを処理するためです。同じ文字で始まるエントリが多数ある長いリストの場合、これはまったく便利ではありません。
ボックスに入力されたすべての文字を処理するのが良い方法ですBasicComboBoxUI$DefaultKeySelectionManager
(これがデフォルトです)。問題は、これがネストされたComboBoxUIと相互作用することです。それを取り、JList
呼び出しますgetNextMatch(prefix, …)
。悲しいことJList.getNextMatch()
に、HTMLエントリは気にしません。
指定されたLAFが使用されるUIを決定するため、BasicComboBoxUIを単純に拡張して別のJList実装を作成することはできません。
何か案は?Java 7はこれを解決しないと思いますか?