JavaFX 8.0 - TableView编辑属性正在重置

时间:2015-07-20 04:53:39

标签: javafx clojure javafx-8 clojure-java-interop

我在JavaFX8中使用Clojure在Win7 x64上进行自定义TableCell。

我定义了一个自定义TableCell,它可以根据单元格中的项目类型呈现不同的东西:当框架调用TableCell.updateItem()时,它会查看单元格项目并相应地设置其图形和文本项。作为其中一部分,它会查看TableCell返回的editingProperty TableCell.isEditing()值。

不知何故,这个editingProperty在某些条件下会在幕后发生变化。

我可以覆盖TableCell.startEdit()函数,并在用户单击单元格时更改单元格内容。在此方法中,调用TableCell.isEditing()会返回True,正如人们所期望的那样。

但是,如果我缩小窗口以使没有单元格内容可见(仅标题栏),然后在单元格编辑时再次打开它,那么updateItem()方法按预期调用,但TableCell.isEditing()现在返回False,并且单元格再次呈现非编辑版本。

使用鼠标离焦或点击另一个单元格会触发TableCell.cancelEdit(),当通过缩小窗口并再次打开窗口来更改editingProperty时,不会触发此类事件。< / p>

我在changeListener上放了一个editingProperty,当我点击单元格时可以观察到属性更改为编辑状态,或者当我点击单元格或排序时,可以观察到非编辑状态该表,但当我缩小表并再次打开它时,没有changeListener事件,并且updateItem() editingProperty值为False。

我想也许当窗口缩小并再次打开时会创建一个新的TableCell,因此editingProperty状态丢失了,但我检查了它并且它是相同的地址/指针/无论什么每一次。

那么问题是如何通过窗口缩小或排序事件等来维护isEditing状态?至少在排序事件中,changeListener会看到editingProperty更改。但随着窗口缩小并重新打开,我没有得到这样的事件。听起来像个臭虫。

由于

0 个答案:

没有答案