当前位置: 首页 > 知识库问答 >
问题:

侦听已选择的JTable单元格上的选择

华谭三
2023-03-14

除了使用MouseListener之外,是否有其他方法可以侦听已选择的单元格(即使是带有JTable)的单元格)?

我有一个带有行和列侦听器的JTable。当选择已经选择的单元格时,两个侦听器都不会触发:

JTable table() {
    JTable table = new JTable(10, 10);
    table.getSelectionModel().addListSelectionListener(rowListener);
    table.getColumnModel().getSelectionModel().addListSelectionListener(colListener);
    return table;
}

ListSelectionListener rowListener = event -> {
    if(event.getValueIsAdjusting())
        return;

    System.out.println("Row: "+((ListSelectionModel) event.getSource()).getMinSelectionIndex());
};

ListSelectionListener colListener = event -> {
    if(event.getValueIsAdjusting())
        return;

    System.out.println("Col: "+((ListSelectionModel) event.getSource()).getMinSelectionIndex());
};

我的目标是打开/关闭电池。它是有效的,除了监听器在选择一个已经选择的单元格时不会触发之外,这是通过上面的SSCCE表示的。

似乎没有任何监听器可以连接到JTable(或者它的模型/选择模型)来处理这个问题,除非我使用MouseListener并手动管理Cooridate。使用TableModelListener,我可以监听更改,但此事件针对的是前一个单元格(已被取消选中),单击未选择单元格的区域将触发该侦听器。

共有1个答案

周威
2023-03-14

我的目标是打开/关闭电池。

在TableModel中存储布尔数据。然后,无论何时单击单元格,该值都将在真/假之间切换。

布尔值的默认渲染器是一个复选框。如果不想看到该复选框,可以始终使用自定义渲染器。

 类似资料:
  • 问题内容: 即将选择单元格时,是否会触发任何事件?有ListSelectionListener,但是它具有仅在选择发生后才触发的事件。我需要某种方法来取消选择事件,并且使用ListSelectionListener并不容易,因为选择已经发生,并且我需要具有一些状态变量来指示选择是正常的还是取消先前的选择。 有没有办法关闭选择通知?但是,这不是100%好的解决方案(如果某些侦听器将选择状态保存在本地

  • 这看起来很简单,但我没有找到答案。 我有一个基本的的值没有改变,我也希望知道用户选择了一些东西并重新触发整个处理。所以可能不是我想要使用的,但我没有找到该使用什么。 有一个基本的select标记和一些选项在里面,这是可能的吗?如果不是,实现这一目标的最佳方法可能是什么?(我懒惰的手指宁愿实现一个自定义的React下拉列表,仅作为最后的手段)。 谢谢你们!

  • 我有一个表,其中有多个表项可用。其中,对于某些表项,设置了背景和前景色。 在选择彩色项目时,由于文本颜色为白色,文本很难阅读,因此,我需要将前面的颜色更改为默认颜色,即黑色。我是用选择侦听器完成的 成功地改变了颜色。 但是现在我正在选择任何其他没有着色的项目,所以我想删除上面的选择侦听器并将文本颜色设置为彩色即白色。我不知道如何使用。 有人能帮忙吗?

  • 问题内容: 如果选择了一个不同的值,组合框将触发一个事件。我还希望能够收听被选中的SAME项(即valueProperty不变)。似乎没有办法做到这一点。 我尝试扩展ComboBox并找到一种方法来监听关闭的小弹出菜单,但我什至无法访问它!我能做什么? 这是我正在尝试的: 问题答案: 更改值之前,可能会触发此事件处理程序。

  • 我想根据单选按钮的选择设置文本框的可编辑选项?如何对单选按钮上的动作监听器进行编码?

  • 问题内容: 我正在尝试创建一个仅显示数据且不允许进行任何编辑或选择的JTable。我通过运行将所有单元格设置为不可编辑: 但是我现在也尝试使所有单元格都无法选择。我发现该方法允许我在选择单元格时禁用整个行的选择,但这并没有阻止该单元格的选择。我浏览了的方法,但没有任何方法。有什么建议? 问题答案: 除了返回从,添加这些调用。