保持初始數(shù)據(jù)不變,并獲得JTable列單元格值的總和

我向JTable(dataTable)添加了一些數(shù)據(jù),使用按鈕單擊事件需要將最后一列特定值的總和添加到另一個JTable(summaryTable)。我需要保持dataTable數(shù)據(jù)的原樣,并將summaryTable相加。但原始數(shù)據(jù)在相加過程中會發(fā)生變化。通過保持原始數(shù)據(jù)的原樣來求和的最佳方法是什么?

Class MyApplication

`public class MyApplication {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("My Application");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new DataPanel());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}`

Class DataPanel

public class DataPanel extends JPanel {
    private JButton sumButton = new JButton();
    private JTable dataTable = new JTable();
    private JTable summeryTable = new JTable();

    public DataPanel() {
        GridBagConstraints gbc = new GridBagConstraints();
        setLayout(new GridBagLayout());
        sumButton.setText("Get Sum");
        dataTable.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][]{
                    {"Column", null, null, null},
                    {null,"01","T20","500"},
                    {null, "01", "R6", "250"},
                    {null, "02", "R6", "50"},
                    {"Slab", null, null, null},
                    {null, "03", "T10", "300"},
                    {null, "04", "T10", "150"}
                },
                new String[]{
                    "Member", "Bar mark", "Type & Size", "Weight"
                }
        ));
        summeryTable.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][]{},
                new String[]{
                    "Type & Size", " Total Weight"
                }
        ));
        JScrollPane dTableContainer = new JScrollPane(dataTable);
        JScrollPane sTableContainer = new JScrollPane(summeryTable);
        gbc.insets = new Insets(5, 5, 5, 5);
        gbc.fill = GridBagConstraints.BOTH;
        gbc.weightx = 0.1;
        gbc.weighty = 0.1;
        add(dTableContainer, gbc);
        gbc.insets = new Insets(5, 5, 5, 5);
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = 0;
        gbc.gridy = 1;
        gbc.weightx = 0.1;
        gbc.weighty = 0.1;
        add(sTableContainer, gbc);
        gbc.insets = new Insets(5, 5, 5, 5);
        gbc.fill = GridBagConstraints.NONE;
        gbc.gridx = 0;
        gbc.gridy = 2;
        gbc.weightx = 0.1;
        gbc.weighty = 0.1;
        add(sumButton, gbc);
        sumButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                DefaultTableModel dataModel = (DefaultTableModel) dataTable.getModel();
                DefaultTableModel summeryModel = (DefaultTableModel) summeryTable.getModel();
                BigDecimal tWeightRsix = BigDecimal.ZERO;
                int rowCount = summeryModel.getRowCount();
                for (int j = rowCount - 1; j >= 0; j--) {
                    summeryModel.removeRow(j);
                }
                for (int i = 0; i < dataModel.getRowCount(); i++) {
                    if (dataModel.getValueAt(i, 2) == null) {
                        dataModel.removeRow(i);
                    }
                    String mark = (String) dataModel.getValueAt(i, 2);
                    if (mark.equals("R6")) {
                        BigDecimal weights = new BigDecimal((String) dataModel.getValueAt(i, 3).toString());
                        tWeightRsix = tWeightRsix.add(weights).setScale(2, RoundingMode.HALF_UP);
                    }
                }
                Object data1 = "R6";
                Object data2 = tWeightRsix;
                summeryModel.addRow(new Object[]{data1, data2});
            }
        });
    }
}
? 最佳回答:

做了一些改動后,我得到了預(yù)期的結(jié)果。

 for (int i = 0; i < dataModel.getRowCount(); i++) {
                if (dataModel.getValueAt(i, 2) != null) {
                    String mark = (String) dataModel.getValueAt(i, 2);
                    if (mark.equals("R6")) {
                        BigDecimal weights = new BigDecimal((String) dataModel.getValueAt(i, 3).toString());
                        tWeightRsix = tWeightRsix.add(weights).setScale(2, RoundingMode.HALF_UP);
                    }
                }
            }
主站蜘蛛池模板: 无码人妻久久一区二区三区免费丨| 国产欧美一区二区精品仙草咪| 国精产品999一区二区三区有限 | 日韩在线视频不卡一区二区三区| 精品视频一区二区三区在线观看 | 国模大尺度视频一区二区| 男插女高潮一区二区| 一区二区三区视频在线观看| 波多野结衣的AV一区二区三区 | 国产精品无码一区二区三级| 一区二区三区高清视频在线观看| 在线精品一区二区三区| 亚洲第一区二区快射影院| 2020天堂中文字幕一区在线观| 亚洲AV综合色一区二区三区| 免费一区二区三区| 日韩精品一区二区三区四区| 综合久久一区二区三区| 国产午夜精品一区二区三区嫩草| 亚洲毛片不卡av在线播放一区| 一区二区三区国模大胆| 一区二区网站在线观看| 一区二区三区四区在线视频 | 亚洲一区二区影视| 日韩精品一区二区三区老鸭窝 | 日韩一区二区三区在线观看| 福利片福利一区二区三区| 国产一区二区在线观看视频| 波多野结衣av高清一区二区三区| 男人的天堂亚洲一区二区三区| 后入内射国产一区二区| 国产精品一区二区三区99| 亚洲一区二区三区免费| 无码一区二区三区免费| 极品尤物一区二区三区| 暖暖免费高清日本一区二区三区| 福利一区二区三区视频午夜观看| 国产福利电影一区二区三区久久老子无码午夜伦不 | 无码乱人伦一区二区亚洲| 中文字幕一区二区三区在线观看| 亚洲熟女www一区二区三区|