1

JavaSwingでオンザフライ検索フィールドを作成しました。検索対象を入力するJTextFieldと、入力の一致を含むJScrollPane内のJListがあります。JTextFieldに書き込むと、JScrollPaneを制御します。JScrollPaneの内容、および表示するかどうかを制御します。

これを使用してサンプルウィンドウを作成すると正常に機能しますが、大きなGUIでは機能しません。GUIを説明することはできないので、これを完全に解決することは期待していませんが、おそらくそれについての質問に答えてください。

つまり、JTextFieldが空の場合、またはヒットが見つからない場合、リストは非表示になります(setVisible(false))。入力を開始し、少なくとも1つのアイテムが見つかると、それが表示されます(setVisible(true))。GUIを起動し、検索フィールドに入力を開始すると、リストが正しく表示されません。単に表示されません。コードをデバッグしましたが、スクロールペインはvisible=trueに設定されています。実行中のコードに従って表示されますが、表示できず、操作もできません。それは他の何かの後ろに隠されていません。

さて、面白いことに。ヒットを生成するものを入力してから、JTextFieldにカーソルを合わせてツールチップをアクティブにすると、JScrollBarが表示されます。それが起こった後、私がウィンドウを閉じるまで、検索フィールドは正常に動作します。目に見える旗は変更されていませんが、どういうわけか、今はそれをペイントできると判断しました。

ツールチップが表示されるとどうなりますか?自分と呼べるような特別な絵が描かれていますか?

4

2 に答える 2

2

を呼び出しrevalidate()た後、スクロールペインとテキストフィールドを含むコンポーネントを呼び出す必要がありますsetVisible。原則として、コンテナがレイアウトされてユーザーに表示されたでコンテナコンポーネントのレイアウトを変更する場合は、それを呼び出す必要がありますrevalidate

それが役に立ったら教えてください!

于 2012-06-12T05:55:45.077 に答える
2

オートコンプリートJComboBox/JTextFieldを見てください。AutoComplete JComboBoxは、煩わしい必要はありません。JToolTip

于 2012-06-12T06:00:58.040 に答える