【发布时间】:2013-12-03 15:57:50
【问题描述】:
在我的 Java 面板中,我有一个 JTable,其中两列通过自定义单元格编辑器使用包 com.toedter.calendar 中的 JDateChooser 对象。与使用文本框或其他简单组件的单元格不同,您无需事先单击单元格即可输入这些内容,此功能在日期选择器单元格中不存在。就我目前的理解而言,这是因为我的自定义编辑器将JDateChooser 对象作为组件返回(通过getTableCellEditorComponent 方法)。由于JDateChooser 的父类是JPanel (according to the API),这就是它要编辑的内容,当然,您不能在JPanel 中键入文本。有什么方法可以检测用户何时切换到日期选择器单元格并尝试在其中输入日期?
附:我确实通过请求关注日期选择器的文本字段来管理一种解决方法,但问题是您键入的第一个键没有出现在单元格中;它只是开始编辑单元格。如果可能的话,我希望它的行为可以让您可以切换到单元格,例如键入一次“1”,然后在其中显示“1”,就像使用常规文本字段单元格一样。
【问题讨论】:
-
我认为您需要自己的单元格编辑器阅读如何在tutorial
-
我没有这个库,所以我无法测试它,但我有一个想法:尝试在
getTableCellEditorComponent()实现中返回dateChooser.getSpinner()。正如我从(糟糕的)API文档中了解到的那样,这应该返回用于编辑日期的JSpinner。 -
我无法在我的代码中调用 getSpinner() 方法。显然它在以后的版本中被删除了,并且 API 从未改变过。但我明白你的意思,实际上我曾尝试调用编辑器组件(在我们的例子中,是 JTextFieldDateEditor 的扩展)。然而,虽然这确实让我无需直接关注文本组件就可以输入数字,但日历按钮没有显示(该方法没有返回它),我们不能这样做。
标签: java swing jtable tablecelleditor jdatechooser