В моей панели Java у меня есть JTable
, в которой два из столбцов используют объект JDateChooser
, из пакета com.toedter.calendar, через собственный редактор ячеек. В отличие от ячеек, которые используют текстовые поля или другие простые компоненты, которые вы можете вводить без предварительного щелчка по ячейке, эта функциональность отсутствует в ячейках выбора даты. Насколько я понимаю, это связано с тем, что мой пользовательский редактор возвращает объект JDateChooser
в качестве компонента (через метод getTableCellEditorComponent
). Поскольку родительский класс JDateChooser
равен JPanel
(according to the API), это то, что он пытается отредактировать, и, конечно же, вы не можете вводить текст в JPanel
. Есть ли способ обнаружить, когда пользователь переходит к ячейке выбора даты и пытается ввести дату в нее?Как отредактировать ячейку таблицы JDateChooser с клавиатурой
P.S. Я сделал некоторое обходное решение, обратив внимание на текстовое поле выбора даты, но улов в том, что первый ключ, который вы вводите, не отображается в ячейке; он просто начинает редактирование ячейки. Если это возможно, я бы хотел, чтобы он вел себя так, чтобы вы могли перейти к ячейке, например, введите «1», например, и в нем появится «1», как и в ячейке обычного текстового поля.
Я думаю, что вам нужен собственный редактор для ячейки читать, как сделать это в [Учебник] (http://docs.oracle.com /javase/tutorial/uiswing/components/table.html#editrender) – alex2410
У меня нет этой библиотеки, поэтому я не могу ее протестировать, но у меня есть идея: попробуйте вернуть 'dateChooser.getSpinner()' в 'getTableCellEditorComponent () 'реализация. Как я понимаю из (плохой) документации API, это должно возвращать 'JSpinner', который используется для редактирования Даты. – dic19
Мне не удалось вызвать метод getSpinner() в моем коде. По-видимому, он был удален в более поздней версии, и API никогда не менялся. Но я вижу вашу точку зрения, и на самом деле я попытался вызвать компонент редактора (в нашем случае - расширение JTextFieldDateEditor). Однако, хотя это позволяло мне вводить цифры без необходимости непосредственного сосредоточения на текстовом компоненте, кнопка календаря не отображалась (она не возвращалась методом), и мы не можем этого сделать. –