首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在JTable中加/去行后加减sum的值

在JTable中加/去行后加减sum的值,可以通过以下步骤实现:

  1. 创建一个JTable对象,并设置表格的数据模型。
  2. 创建一个TableModel对象,继承AbstractTableModel,并实现其中的方法,包括获取表格的行数、列数、单元格的值等。
  3. 在TableModel中添加一个变量sum,用于保存总和的值。
  4. 在TableModel的setValueAt()方法中,当修改某个单元格的值时,更新sum的值。
  5. 在JTable中添加一个TableModelListener,监听TableModel的变化。
  6. 在TableModelListener中,当有行被添加或删除时,更新sum的值。
  7. 在界面中显示sum的值,可以使用一个JLabel组件,并在TableModel或TableModelListener中更新该组件的文本。

下面是一个示例代码:

代码语言:txt
复制
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;

public class SumJTableExample extends JFrame {
    private JTable table;
    private JLabel sumLabel;

    public SumJTableExample() {
        // 创建表格数据
        Object[][] data = {
                {1, 2},
                {3, 4},
                {5, 6}
        };

        // 创建表格列名
        String[] columnNames = {"Column 1", "Column 2"};

        // 创建TableModel对象
        MyTableModel model = new MyTableModel(data, columnNames);

        // 创建JTable对象
        table = new JTable(model);

        // 添加TableModelListener
        model.addTableModelListener(new TableModelListener() {
            @Override
            public void tableChanged(TableModelEvent e) {
                // 更新sum的值
                int sum = 0;
                for (int i = 0; i < model.getRowCount(); i++) {
                    for (int j = 0; j < model.getColumnCount(); j++) {
                        sum += (int) model.getValueAt(i, j);
                    }
                }
                sumLabel.setText("Sum: " + sum);
            }
        });

        // 创建显示sum的标签
        sumLabel = new JLabel("Sum: 0");

        // 创建布局并添加组件
        JPanel panel = new JPanel();
        panel.add(new JScrollPane(table));
        panel.add(sumLabel);

        // 设置窗口属性
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().add(panel);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new SumJTableExample();
            }
        });
    }

    // 自定义TableModel
    class MyTableModel extends AbstractTableModel {
        private Object[][] data;
        private String[] columnNames;

        public MyTableModel(Object[][] data, String[] columnNames) {
            this.data = data;
            this.columnNames = columnNames;
        }

        @Override
        public int getRowCount() {
            return data.length;
        }

        @Override
        public int getColumnCount() {
            return columnNames.length;
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            return data[rowIndex][columnIndex];
        }

        @Override
        public void setValueAt(Object value, int rowIndex, int columnIndex) {
            data[rowIndex][columnIndex] = value;
            fireTableCellUpdated(rowIndex, columnIndex);
        }

        @Override
        public String getColumnName(int column) {
            return columnNames[column];
        }

        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return true;
        }
    }
}

这个示例代码演示了如何在JTable中加/去行后加减sum的值。每当表格中的单元格值发生变化或行被添加/删除时,都会更新sum的值,并在界面上显示出来。你可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在Java中使用Table

在Java中,表用于将数据排列成列和。列是表中水平排列空间,而行是表中垂直排列空间。列和之间交点称为单元格,用于保存单条数据。...在Java中,开发人员可以使用JTable方法在其应用程序中创建表。JTable是从JComponent类继承Swing组件。 如何在Java中创建表 要创建表,需要创建JTable实例。...您需要在其构造函数中为要构造表提供两个参数(row和column),如以下示例代码段所示: JTable table = new JTable (row, column); row和column可以由两个整数值组成...,如下所示: JTable table = new JTable (5,3); 上面的语句创建了一个包含53列表。...如何在Java中管理列宽和列高 如果要设置高度,可以使用setRowHeight()方法。

2.1K40

java swing项目桌面软件还是蛮香,至少有了我自己桌面软件|Java 开发实战

2、先将JTable加入jscrollpane(滚动条)中,然后在将滚动条加入到对应控件中(Jpanel或者是Jframe).java swing 开发中加入滚动条是很常见操作,所以这种方式加入表格还是很推荐...我们在源码里可以看见,我们会发现AbstractTableModel有事继承TableModel这个接口。所以我们所有方法都是源于他。...我们观察AbstractTableModel源码中注释发现,我们只需要继承AbstractTableModel类只需要实现三个必须方法,其他方法根据需要实现public int getRowCount...JTable显示模块刷新从1-6所有数据,所以说比如你更新了第一数据,而你用两个参数是1,4.那么恭喜你,你更新JTable无法实现,因为他只更新从第二开始到第五数据。...就会采用默认渲染方式渲染表格,默认就是所有都是字符串形式展示,这个设置在JTable源码中protected void createDefaultRenderers() { defaultRenderersByColumnClass

25610
  • java winform开发之JTable全攻略

    这两天在研究JTable使用,也有一些收获,所以在这里跟大家分享交流一下,下面的内容将包括:1)JTable基本用法;2)怎样为JTable添加行点击响应事件,双击打开窗口;3)怎样为JTable...添加标识,id等;4)怎样在JTable中动态添加新;     1)JTable基本用法: 我用IDE是NetBeans,由于也是简单做几个页面的客户端,主要还是Web开发,所以暂时不打算深究...,只要调用JTablesetModel方法,就可以将列头及数据信息显示在表格中啦。...添加行标识 我们知道,JTable每一个单元格,要求类型是一个Object实例,也就是说,只要是一个对象就可以了,这个机制,给了我们非常大发挥空间,我们可以在一个单元格中存放任意类型对象,...4)怎样在JTable中动态添加新 其实这个问题非常简单,只要根据列模型生成相应对象,然后通过调用JTablemodel对象addRow方法就ok了,由于过于简单,所以直接贴代码来说明问题:

    1.2K30

    Java实现超市管理系统(含数据库)

    来源:https://blog.csdn.net/qq_44859533 ---- 序言: 这次写超市管理系统,实现功能有账户注册、登录,超市商品类别的添加、修改和删除以及商品添加、修改和删除功能...用户注册之后把注册信息导入数据库;用户登录时候查询用户表,方可登录进去;商品类别和商品增加也注册信息一样,把信息导入商品类别表和商品表。...超市管理系统一些功能还没有完善,后续还会更新顾客登录超市系统,只能拥有查询商品权限,并且还可以实现购买商品功能。 1、首先是建立数据库表: ? ? ? ? 2、实现主页面: ?...,主要是在JFrame窗口中加入Inter窗口 ?...((String)jTable1.getValueAt(row,3)); } //鼠标单击,修改 private void jButton2ActionPerformed(java.awt.event.ActionEvent

    3.4K31

    Java Swing JTable

    在设计使用JTable应用程序时,值得密切注意将代表表数据数据结构。 DefaultTableModel是一个模型实现,它使用对象矢量向量存储单元格。...使用专门渲染器和编辑器。 JTable仅使用整数来引用它显示模型和列。 JTable只是采用表格形式单元格范围,并在绘制过程中使用getValueAt(int,int)从模型中检索。...重要是要记住,由各种JTable方法返回列和索引是根据JTable(视图)而言,不一定与模型使用索引相同。...当将JTable基于方法与基础TableModel一起使用时,必须进行坐标转换。所有基于JTables方法都是基于RowSorter,不一定与基础TableModel相同。...此添加方式适合表格行数确定,数据量较小,能一次性显示完表格; 添加到JScrollPane滚动容器中,此添加方式不需要额外添加表头,jTable添加到jScrollPane中,表头自动添加到滚动容器顶部

    5K10

    Java实现超市管理系统(含数据库)

    ---- 序言: 这次写超市管理系统,实现功能有账户注册、登录,超市商品类别的添加、修改和删除以及商品添加、修改和删除功能。...用户注册之后把注册信息导入数据库;用户登录时候查询用户表,方可登录进去;商品类别和商品增加也注册信息一样,把信息导入商品类别表和商品表。...超市管理系统一些功能还没有完善,后续还会更新顾客登录超市系统,只能拥有查询商品权限,并且还可以实现购买商品功能。 1、首先是建立数据库表: ? ? ? ? 2、实现主页面: ?...,主要是在JFrame窗口中加入Inter窗口 ?...((String)jTable1.getValueAt(row,3)); } //鼠标单击,修改 private void jButton2ActionPerformed(java.awt.event.ActionEvent

    9.3K63

    java swing 添加 jcheckbox复选框

    运行,窗体在屏幕左上角显现并且是最小化形式。那么关于设置窗体显示就不再赘述了,值得注意是窗体布局必须设置。...②然后我们需要将表格对象创建出来并放入该容器控件,(JDK_API_1_6_zh_CN.CHM)创建表格控件。...比如上面的例子JTable(TableModel dm),这是JTable构造方法,需要是一个TableModel接口类型参数(这里只是举例,实际运用比较复杂),我们可以使用如下写法:JTable...new MyTableModel:TableModel(){}也就是说大家可以想象成(new TableModel(){})是在声明一个匿名对象,它属于一个不具名类(MyTableModel),该类实现了...(new DefaultTableModel(new Object[][]{{"第一"},{"第二"},{"第三"},{"第四"}}, new String[]{"测试行1","测试行2"}){

    3.3K00

    java超市仓库管理系统(超市条形码管理系统)

    ,要求如下: 1、商品管理页面布局,添加一个JScrollPanel(内嵌JTable),用来显示所有商品信息;添加两个JLabel用于显示查询提示信息;添加JTextField用于输入商品商品名称;...图2 3、单击“添加商品”按钮,弹出如图3所示窗体,此时必须输入所有商品信息, 否则将弹出如图4所示对话框;当商品信息输入完毕,单击“确定”按钮,实现商品添加, 在弹出如图5所示对话框,释放窗体...5、获取选定索引,参考代码如下: int index=table.getSelectedRow();//table为表格对象 获取选定商品名称,参考代码如下: table.getValueAt...(index,1);//index为选定索引 6、在编写代码时,最好用方法对重复使用代码进行封装,尽量减少代码冗余; 7、编译程序,并运行。...(jTable.getValueAt(jTable.getSelectedRow(), 2).toString()); String price = jTable.getValueAt(jTable.getSelectedRow

    3.5K20

    JTable怎样控制某一列、某一单元格允许或不允许被编辑

    网上有很多关于怎样实现JTable不能被编辑文章,因为如果不设置的话,双击单元格就会将单元格内容读入一个默认编辑器里,很多时候我们并不希望这样事情发生,所以必须do something来阻止它。...就是重写DefaultTableModel方法isCellEditable方法,但更多情况下,我们是需要指定表格中某一列或若干列允许被编辑,商品列表中数量,价格等等,这样又如何实现呢?    ...其实仔细观察一下,这个isCellEditable方法会传两个参数进来,明眼人一看就知道,这分别是单元格和列索引,所以,根据这个row和column来控制返回true或false,我们愿望就能实现了...3){ return true; }else{ return false; } } 2、只允许表格第二、第二列单元格被编辑 public boolean...4和第6被编辑 public boolean isCellEditable(int row,int column){ if(row == 4 || row == 6){ return

    1.1K10

    Python之简易计算器

    思路:学会运用正则表达式把需要先进行计算匹配出来,然后再一步步算,把先算出来替换原来,再进一步把++,--等号变成我们正常数学上符号,然后再进行一步步替换,最终把带括号都计算出来...*") #以*作切割,把切出来两个分别赋给a,b return str(float(a) * float(b)) #用float计算ab相乘并转换成字符串格式,便于计算...else: a,b = exp.split("/") #以/作切割,把切出来两个分别赋给a,b return str(float(a) / float(b))...,exp) #把能加减匹配出来,包括小数,负数等 exp_sum = 0 for i in ret: exp_sum += float(i) #累加至exp_sum...= add_sub(exp) #加减 return exp_sum #float def main(exp): exp = exp.replace(" ","")#空格

    58710

    值得练手JavaGUI项目——色彩调节器实现【附完整源码】

    蓝(Blue)经过不同深度调色得到,而RGB色彩模式就是是工业界一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道变化以及它们相互之间叠加来得到各式各样颜色。...首先是设置调色器窗体和字体,并且根据我们需要将窗体进行简单面板布局,在这里我们可以将窗体划分为一三列,即:第一列摆放三种滑块、第二列显示三种颜色RGB、第三列显示当前得到颜色。...,我们用到了JSlider控件,也就是滑块控件,在该控件后面对应三个参数分别是滑块最小,滑块最大,滑块初始时默认位置,代表红色RGB滑块,最小是0,最大是255,当程序运行时滑块默认处于位置是...//设置颜色显示区域 colorLB = new JTable(); colorLB.setBackground(Color.red); add(colorLB); 现在调色器中控件基本上都设置已经完成了...,滑块 public class Toning_device extends JFrame implements ChangeListener{ //将控件设置为公有权限 public JSlider

    2.3K20

    从机器学习学python(四) ——numpy矩阵广播及一些技巧

    假设矩阵A是3*4矩阵,则B=A.sum(axis=0)返回是对矩阵A每一列求和结果行向量,同理A.sum(axis=1) 返回是对矩阵A每一求和结果列向量。...2、广播通用规则 对于(m,n)矩阵A,(1,n)矩阵B,A与B进行运算(包含加减乘除,下同),则都会将B扩充成(m,n),且每一都一样,都是由第一扩充出来。...这并不会改变B,而是在内存中进行临时扩充,目的是为了计算出结果。 同理,B是(m,1)时,会扩充成(m,n)。...另外行、列向量,对一个实数进行加减乘除,则会将实数扩充成同等形状、列向量,再运算,具体见下图: ? ?...3、一些建议 ng给一个建议,是最好不要用到秩是1矩阵,而要将其转为n1列矩阵,这样计算起来比较不容易发生问题。

    1.7K40

    武工大2022蓝桥杯预选赛题解复现

    所以阿祥花了半天时间用小写英文(zero~nine,add, sub)写了一个超级长英文加减法算式(当然,垃圾阿祥不会写大于10英文数字,全是逐字符翻译,每个单词都用一个空格隔开),完成他觉得非常有成就感...输入描述: 一字符串 s(1 ≤ len(s) < 50000) 输出描述: 第一:还原英文加减法算式(每个单词间用空格隔开) 第二:一个整数,表示加减法算式结果 题解复现 字符串到数字转换由...pair 中两个元素分别是 first 和 second ,只需要按正常结构体方式访问即可。...抽出牌是3、8、8、93、8、8、93、8、8、9 ,那么算式为(9−8)×8×3=24(9-8)×8×3=24(9−8)×8×3=24 。...(输出不包含双引号) 题解复现 最小生成树 边赋以权图称为网或带权图,带权图生成树也是带权,生成树T各边总和称为该树权。权最小生成树即最小生成树。

    65230

    c语言大一基本理解笔记1

    函数时,将sum变量取代双撇号中%d return 0; //使函数返回为 0 } */ //函数结束 /*c语言程序结构 1一个程序由一个或多个源程序文件组成; &1.预处理指令 #include...c语句完成赋值,输入输出数据,c程序书写格式比较自由,一内可以输入多个语句 6.在每个数据声明和语句最后必须有一个分号。...,无论是什么类型,都是以常量或变量形式出现, 在程序设计中,常量可以作说明而直接引用,但是变量应遵循“先定义,使用;先赋值,引用”原则。...只适合做加减法。 字符做加减是什么概念呢?...(使用ASCII编码的话相当于对ASCII加减运算) 如果要处理数据类型,一定要注意两个方面的东西: (1)数据取值范围:这一个类型数据,在内存中怎么保存;比如说一个整型数在内存中是怎么保存

    63630

    Joomla 权限提升漏洞(CVE-2016-9838)分析

    : ?...整个流程看下来我发现这样一个问题: 如果$data中有id这个属性并且其是一个已存在用户 id ,由于在bind和save中并没有对这个属性进行过滤,那么最终保存数据就会带有 id 这个主键,...实际操作一下,我们之前注册了一个名字为 victim 用户,数据库中 id 是57: ? 然后我们以相同用户名再发起一次请求,然后截包,添加一个为57名为jform[id]属性: ?...整个攻击流程总结如下: 注册用户A 重复注册用户A,请求包中加上想要攻击用户C id 注册用户B 用户B替代了用户C (上面的演示中A和C是同一个用户) 需要注意是我们不能直接发送一个带有 id...另外一点,实施攻击被攻击用户权限会被改为新注册用户权限(一般是 Registered),这个权限目前我们无法更改,因为在getData函数中对groups做了强制赋值: $temp = (array

    2.5K100

    MATLAB中向量_向量法表示字符串

    向量运算 算术运算 向量中加减法运算 可以看见是对向量中每个元素进行加法运算,减法也一样 向量中乘法、除法....例如: 逻辑与(&)和逻辑或(|): 例子: find():可以用find()函数查找为true元素在一个逻辑向量中索引 例如: sum()、min()、max()、round...数组属性 size():返回各个维度大小 length():返回数组最大维度 创建数组 直接输入 和向量一样,在数组中直接输入时,可以使用分号(;)或以新来表示换行...,每列最大和每列最小 连接数组 看一个简单例子 切片数组 对一个数组进行切片:A(对索引,对列索引) 例子: 重塑数组 有些时候我们希望将某一维度数组变形为另一种维度需求...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.3K30
    领券