【问题标题】:Whats the proper event for changes in any cell of JTable?JTable 的任何单元格中更改的正确事件是什么?
【发布时间】:2010-01-14 05:41:48
【问题描述】:

我有一个简单的 JTable,有两列很重要:数量和价值(整数)。每次用户输入新行或更新一行时,每行值必须乘以数量,结果相加,结果和显示在 JTable 外部的 JLabel 中。看起来很简单。除了我不知道我应该寻找什么事件。像“单元格值改变”之类的东西?当我右键单击 NetBeans 中的 JTable 时,我看不到此类事件或无法识别它;)无论如何,在我想出一些奇怪的 noobish 解决方案之前,我想我可能会在这里问什么是正确的方法:)

【问题讨论】:

    标签: java swing jtable


    【解决方案1】:

    您应该按照here 的说明添加TableModelListener

    此外,在您的侦听器中,一旦您以编程方式更新了其他单元格值的值,您将需要调用 model.fireTableCellUpdated 让 swing 了解更改

    【讨论】:

    • getModel() 是操作方法。其实抛开俗气的demo代码,处理好模型,然后用它建表就好了,但千万不要调用getModel()
    【解决方案2】:

    最后,我设法找到了如何在 NetBeans 中使用所有代码保护等等来做到这一点。在设计视图中右键单击 JTable,属性,然后代码选项卡,然后在预添加代码部分添加您的代码(在将表添加到容器或类似内容之前评估的代码)。

    对我有用的确切代码是这样的:

    table.getModel().addTableModelListener(
    new TableModelListener() 
    {
        public void tableChanged(TableModelEvent evt) 
        {
             // here goes your code "on cell update"
        }
    });
    

    我知道上面的 Tom 建议永远不要调用 getModel() 但我对 Java 太陌生了,无法理解为什么(请解释一下..?):) 无论如何这只是一个例子,我是添加此答案只是为了显示 如何 在 NetBeans 中执行此操作(感谢 pstanton 回答 what 要做什么)。因为我发现有很多人在互联网上问这个问题并且没有真正的答案(除了“将受保护的代码复制出 NetBeans 保护区,然后自定义你的表格)。

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2016-04-27
      • 2014-08-24
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多