当前位置: 首页 > 面试题库 >

如何向包含呈现为复选框的布尔值的JTable的单元添加鼠标侦听器

汪修诚
2023-03-14
问题内容

我有一个JTable,它带有一个实现了AbstractTableModel的自定义模型。

public abstract class AbstractTable extends AbstractTableModel{

     public Class<? extends Object> getColumnClass(int c) {}
}

因为我已经实现了getColumnClass方法,所以布尔值像复选框一样呈现在表中。我想拦截复选框的状态更改,但是不幸的是,我无法直接添加鼠标侦听器,因为我没有对复选框本身的引用,它不是由我创建的。

如何设置鼠标侦听器以拦截复选框状态更改事件?

编辑:

@jzd答案是正确的。我可以捕获setValue方法中的更改。但是我想知道如何实现基于鼠标侦听器的方法。


问题答案:

特别是,我想避免将逻辑放在里面setValue()

在此可选值示例中,该setValue()方法不会被覆盖,
除了更新内部数据结构并触发适当的事件外
ValueEditor扩展AbstractCellEditor和实现ItemListener,而ValueRenderer扩展JCheckBox。通过这种方式,编辑者可以在编辑器JCheckBox内部收听渲染器的声音itemStateChanged()

附录:添加a
CellEditorListener是另一种方法,此处显示为JTree。请注意,JTable本身是个CellEditorListener



 类似资料:
  • 除了使用之外,是否有其他方法可以侦听已选择的单元格(即使是带有)的单元格)? 我有一个带有行和列侦听器的JTable。当选择已经选择的单元格时,两个侦听器都不会触发: 我的目标是打开/关闭电池。它是有效的,除了监听器在选择一个已经选择的单元格时不会触发之外,这是通过上面的SSCCE表示的。 似乎没有任何监听器可以连接到(或者它的模型/选择模型)来处理这个问题,除非我使用并手动管理Cooridate

  • JTable: 我在NetBeans中创建了一个JTable,其中我从数据库中的某些列中获取值,如图中所示,我为TESTNAME、单位、SPECIFICRANGE列带来值,但第二列OBSERVED VALUE我为用户输入保留了空值,用户输入是这样的每当用户点击颜色前面的单元格时,他应该在第二列单元格中得到一个JComboBox,我的意思是鼠标事件上的颜色前面的单元格,对于其他单元格,我使用edit

  • 问题内容: 我正在尝试将鼠标侦听器添加到MapMarker,以便当鼠标将鼠标悬停在MapMarker上时,我可以对事件做出反应。 我实现了mouseListener,但是我不能真正添加​​一个监听器。问题是由于没有层次结构实现JPanel,所以我没有找到MapMarker添加addMouseListener的方法。 任何帮助表示赞赏 问题答案: 如前所述这里,默认的构造函数使用了“这实现了Map按

  • 下面是一个包含两列两行的简单表的代码。是否有人可以修改它,或者用简单的术语来解释,我如何为行标题的目的呈现最左边的列。 谢谢你。

  • 问题内容: 所以我有一个带有复选框的JTable。我想让复选框 在“选中”时包含一个图像,而在“未选中”时包含另一个图像 (即,显示图像而不是选中或未选中的框)。是否 有办法做到这一点?我试着用TableCellRenderer愚弄它 返回带有ImageIcon的JLabel,但是它并不是非常有效。 更具体地说,当复选框处于选中状态或未选中状态时,右侧的图像 就会出现,但是当用户更改复选框状态(鼠

  • 期望:如果取消选中/禁用复选框,我希望显示样例布尔值false