【问题标题】:How to add a type of listener to a JTable (Java)?如何向 JTable (Java) 添加一种侦听器?
【发布时间】:2011-11-19 05:33:17
【问题描述】:

我有一列包含纯文本。

如果用户双击该列中的一行,则该列允许对该行进行编辑(应该如此)。

我需要一些东西来检测该文本何时完成编辑(例如,当用户按下回车键时)。发生这种情况时,我需要一些东西来获取该更改的行 ID(当然是从 0 开始)。

有什么想法吗?

谢谢!

【问题讨论】:

  • 如果您打算根据行号更新模型,请考虑显示的方法here

标签: java swing jtable action listener


【解决方案1】:

你应该给 TableModel 添加一个监听器:

table.getModel().addTableModelListener(new TableModelListener() {

      public void tableChanged(TableModelEvent e) {
         // your code goes here;
      }
    });

TableModelEvent 包含行号和列号以及修改类型。

【讨论】:

  • 我如何获得它检测到的行?
  • +1。 TableModelEvent 可以访问 TableModel,因此您可以使用 getValueAt(...) 方法获取行 ID。
  • 这给我的唯一整数是第一行和最后一行 - 这个方法不是只在一个值发生变化时调用吗?
【解决方案2】:

我认为根据行和列获取点击位置的最简单方法是:

table.addMouseListener(new java.awt.event.MouseAdapter() {
    @Override
    public void mouseClicked(java.awt.event.MouseEvent e) {
        int row = table.rowAtPoint(e.getPoint());
        int column = table.columnAtPoint(e.getPoint());
        if (row >= 0 && column >= 0) {
            ......

        }
    }
});

【讨论】:

  • 谢谢,但我需要两者兼而有之。我有一个包含纯文本的列。如果用户双击该列中的行,则该列允许对该行进行编辑。我需要一些东西来检测该文本何时完成编辑(例如当用户按下回车键时。发生这种情况时,我需要一些东西来获取该更改的行 ID(当然是从 0 开始)。
  • 难闻的气味吗?在访问 TableModelListener 时使用 MouseEvents?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 2010-11-26
  • 2014-02-08
相关资源
最近更新 更多