有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java NetBeans平台如何在属性开始/结束编辑时获取回调

在我的领域中,我有一个单独的过程不断更新的对象,我想要一个PropertySheetView来显示不断变化的属性。当前的实现是这样设置的,即基础域模型对象是不可变的,因此当它发生更改时,会发布一个具有相应ID的新对象。此时,包装该对象的节点已订阅,将获得具有匹配ID的更新对象,并重新创建工作表(通过createSheet())并使用更新的信息调用setSheet。这在始终显示域模型对象的最新版本时效果很好

但是,有些属性不是只读的,而是可以设置的。我想在编辑属性时锁定图纸,防止其在行或图纸的基础上被更新/覆盖。为了做到这一点,我需要监听编辑开始和结束调用,这样我就可以知道何时可以安全地再次更新工作表

这对我的申请至关重要;现在,在刷新工作表和删除编辑之前,无法输入新值

如果重要的话,我使用的是自定义PropertyEditorSupport,但是默认的InplaceEditor

我在NetBeans源代码中做了很多搜索,没有看到任何公开的API设置来监听这些东西

SheetCellEditor(org.openide.explorer.propertysheet)公开了addCellEditorListener方法,但A)我不知道如何获得SheetCellEditor实例的句柄,B)SheetCellEditor公开的方法被EditingCanceld和editingStopped-没有开始编辑的回调!看起来很傻。SheetTable和BaseTable也会公开这个属性,因为它们扩展了JTable,但我也不知道如何获得它们的句柄

我注意到CellEditor接口需要方法isCellEditable(),如果可以编辑单元格,该方法应该返回true,因此编辑开始。但是,这是由SheetCellEditor实现的,它不是一个公共类,我不知道如何获取对它的引用

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    我能想出的最佳解决方案如下:

    创建自定义属性编辑器。让那个编辑器实现InplaceEditor。返回作为文本字段的StringInplaceEditor。将焦点侦听器附加到该文本字段。当焦点位于文本字段中时,将对其进行编辑。否则就不是了