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

JTable单元格更新问题

淳于祺
2023-03-14

我有一个问题,我无法解决单独和帮助其他话题在那里。找到了一些相似的,但它没有帮助。

我的问题有点棘手,我想,我会尽力解释清楚。

因此,我得到了一个包含两列的JTable,列2和列3是可编辑的,列4是这两个列的乘积(col4=col2*col3)。我要做的是,当我编辑第2或第3列时,第4列将自动更新它的值。我理解这一点,但不完全理解。只有当我完成MouseClick编辑时单元格才会更新。如果编辑是通过回车键完成的,我希望单元格也有同样的反应。

if(recipeTable.getCellEditor()!=null)recipeTable.getCellEditor().stopCellEditing();
recipeTableModel = new DefaultTableModel(COLUMN_HEADLINE, 0) {

        @Override
        public boolean isCellEditable(int row, int column) 
        {
            model.updateTotalPriceInTable(recipeTable);
            return (column == 2) || (column == 3);
        }
    };
public void updateTotalPriceInTable(JTable table)
{
    double totalPrice;
    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    for(int i = 0; i < tableModel.getRowCount(); i++)
    {
        totalPrice = Double.parseDouble(tableModel.getValueAt(i, 2).toString()) * Double.parseDouble(tableModel.getValueAt(i, 3).toString());
        tableModel.setValueAt(totalPrice, i, 4);
    }
    tableModel.fireTableDataChanged();
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@Override
        public void setValueAt(Object aValue, int row, int column)
        {
        Vector rowVector = (Vector)dataVector.elementAt(row);
        rowVector.setElementAt(aValue, column);
        rowVector.setElementAt(Double.parseDouble((String) rowVector.get(2))*Double.parseDouble((String) rowVector.get(3)), 4);
        fireTableDataChanged();
        }

共有1个答案

苍温文
2023-03-14

重写TableModel的setValueat(...)方法。调用super.SetValueat(...)以正常保存数据

然后每当第2列或第3列中的数据发生变化时,您就计算第4列的值并更新模型。

 类似资料:
  • 我一直在试图找到一种通过直接输入来更新我的细胞的方法。从我的研究来看,每个人似乎都说你必须使用 尽管如此,它还是让我投myJTable-- 以下是我当前的表代码,如果这有帮助的话: 我怎么可能从用户直接输入更新的单元格中保存数据?谢谢!

  • 我在更新JTable的单元格值时遇到了一个问题。我想做的是在从JTable中选择一个特定的单元格之后,我应该能够进行编辑,并且该操作必须反映后端的数据库。我在用HSQL。我的表有4列,有一个PK。请给我一个替代和/或提供一些代码,替换的*。我是新来的,只是个初学者。

  • 我有一个jtable保存账本文件记录并将它们发送出去。

  • 问题内容: 我想制作一个可编辑的表,然后检查数据以确保其有效。我不确定如何仅更改一个单元格的颜色。我想要一个单元格,例如(0,0)并将前景颜色设置为红色。我已经阅读了SO和Oracle上有关自定义ColorRenderer的其他文章,但是我不知道如何使用它。 谢谢。 问题答案: 假设您要用其他颜色渲染的单元格代表一种状态(我将以“拒绝并批准”为例)。然后,我将在我的表模型中实现一个名为getSta

  • 问题内容: 我试图使自己熟悉JTables,TableModels,JTableHeaders,渲染器等。我试图制作一个简单的虚拟表(出于练习目的),看起来像这样: 我还希望B2单元格-并且只有该单元格-具有蓝色(Color.BLUE)背景-所有其他单元格都可以具有自动分配的Swing默认颜色。 我的代码在下面,并且基于我在本网站和整个互联网上发现的无数示例。但是我没有得到想要的结果。相反,我得到

  • 问题内容: 在Netbeans中,我使用了GUI Builder将JTable插入到我的应用程序中。 到目前为止,我只有一个类(CustomerDB): 每当用户更改表中的数据时,我都希望获取该单元格的旧值(可选)和新值。 为了获取此数据,我尝试实现一个事件侦听器: 然后,将此CellEditorListener分配给表(其单元格编辑器): 到目前为止,该方法有效。 但这还无法使我检测到此单元格的