首页
学习
活动
专区
工具
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); 上面的语句创建了一个包含5行3列的表。...如何在Java中管理列宽和列高 如果要设置行的高度,可以使用setRowHeight()方法。

2.2K40

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

40210
  • java winform开发之JTable全攻略

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

    Java Swing JTable

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

    5.1K10

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

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

    9.5K63

    java.awt.swing菜单组件

    JMenuBar组件是用来摆放JMenu的菜单栏组件,当创建很多JMenu组件后,需要通过JMenuBar组件将JMenu组件加入到窗体中。...12.3.1 JTable 表格也是Swing GUI编程中常用的组件,表格是一个由行、列组成的二维显示区域,Swing的JTable提供了对表格的支持,通过使用JTable创建表格是非常容易的,它的构造方法如表...public JTable(int numRows, int c) 使用 DefaultTableModel 构造具有 numRows 行和 numColumns 列个空单元格的 JTable。...public (Object[][] rowData, Object[] obj) 构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。...,还需要传入一个一维数据作为列标题,接下来通过一个案例来演示JTable类的使用,如例12-15所示。

    13910

    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

    第八章:购物车案例

    官方推出了对Vue的支持,我们可以根据自己的需求引入图标,这样到了最后打包的时候生产环境的文件只会包含我们所需要的图标文件,大大减小了依赖的体积,优化了应用的性能,本文讲解如何在Vue中使用Font Awesome.../vue-fontawesome npm install --save @fortawesome/free-solid-svg-icons 其中第一行的依赖是Font Awesome的核心部分,第二行的依赖是...点进去后我们可以看到如下内容: 注意划横线的内容,我们可以知道这个图标属于solid风格,同时关注一下这个class属性的内容,现在我们就可以去引入这个图标了,添加一些内容到main.js文件后它变成如下状态...fortawesome/free-solid-svg-icons'; 引入完毕后还要在核心依赖中加入这个引入的图标: library.add( faUser, );我这里用换行的写法方便以后引入更多的图标时代码清晰...计算购物车中选中商品的总数量 遍历lists中所有的选中商品数据 把其中的num加到一起。 第四步:加减按钮

    12210

    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.2K10

    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

    值得练手的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.4K20

    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(" ","")#去空格

    59210

    武工大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各边的权值总和称为该树的权。权值最小的生成树即最小生成树。

    66430

    从机器学习学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的矩阵,而要将其转为n行1列的矩阵,这样计算起来比较不容易发生问题。

    1.8K40

    高级Swing 组件

    但是,列表框中选择的集合始终都是固定的。那么我们应该如何在列表框中添加或者删除项目呢?让人有些奇怪的是,JList类中没有任何方法可以用来实现这些操作。相反,你必须进一步了解列表组件的内部设计情况。...getElementAt方法可以在每个值被调用时随意对这些值进行从新计算。如果你想要显示非常大的一个集合而又不必存储这些值,那么这种方法可能是很有用的。...,该列表在它被完全刷新之前,将会显示一个新值与旧值混合在一起的视图(上面的整个构造器中的final一词无法阻止你修改其他位置上的向量,它只意味着构造器本身将不修改listData引用的值;关键字final...在我们的示例中,我们将要对表格中的各个行进行排序。请运行示例代码中的程序,双击列标题中的一个。你将能够看到表格的各个行是如何被从新安排的,从而可以列的项目进行排序。...当JTable需要查看某个值时,过滤器模型便计算实际的行索引,并且从模型中获取该值。

    6910
    领券