Если вы не примените определенное поведение к своему списку, вы можете попробовать другой способ, добавив комбинированный список в качестве редактора этой таблицы. Проверьте DefaultCellEditor для примера этого.
Если вы измените содержимое поля со списком при его вызове с правильными значениями, я думаю, оно будет соответствовать вашим потребностям. Для этого вам нужно будет создать свой собственный CellEditor, скорее всего, с помощью TableCellEditor , чтобы вы могли изменять его значения в зависимости от того, когда он вызывается (в методе getTableCellEditorComponent ()) .
Редактировать: О проблеме KeyListener , о которой вы говорите в комментарии, вы должны думать, что событие Key отправляется до обновления фактического текста в JTextField. Поэтому нормально, что ваш вызов getText()
возвращает значение без нового символа.
Однако, поскольку это KeyEvent , у вас есть доступ к набранному символу, непосредственно с evt.getKeyChar()
или evt.getKeyCode()
, чтобы проверить, действительно ли это была напечатанная буква. С помощью этих методов вы можете узнать полный «текст», который вам нужен.
Кроме того, из видео в вашем комментарии кажется, что вам нужен список, который фактически адаптируется в соответствии с тем, что пользователь начал печатать, и ограничивает выбор в соответствии с уже введенным.
Если вы можете (и можете) использовать дополнительные библиотеки, я бы порекомендовал вам взглянуть на компоненты SwingX (http://swinglabs.org/).). Эта библиотека в целом предлагает множество полезных компонентов для использовать в Swing-интерфейсах. На их сайте есть демонстрационная версия, хотя, кажется, она недоступна в этот час, может быть, позже.
В их пакете " autocomplete " вы сможете найти класс с именем "AutoCompleteDecorator" и другие полезные, которые позволят вам улучшить ваш редактор Combobox, чтобы он пытался завершите сам пользовательский ввод и выделите правильную позицию в списке (я думаю, что он также может фильтровать список, точное поведение, которое вы хотите, но я не совсем уверен). Если вы сможете использовать это, это фактически избавит вас от необходимости самим заботиться о каретных событиях, а также обновит список, как это, скорее всего, сделает для вас.
Вы можете скачать .Jar и javadoc на их сайте. Вот копия javadoc с другого сайта для пакета автозаполнения, хотя он мог бы измениться за это время, но он даст вам представление.