Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在“总计”列的所有单元格中显示默认的表模型总计(总和)数据_Java_Defaulttablemodel - Fatal编程技术网

Java 我想在“总计”列的所有单元格中显示默认的表模型总计(总和)数据

Java 我想在“总计”列的所有单元格中显示默认的表模型总计(总和)数据,java,defaulttablemodel,Java,Defaulttablemodel,在“总计”列的所有单元格中显示计算数据 我不知道怎么做,当计算时,它会显示在总计列的所有单元格中 final DefaultTableModel model = new DefaultTableModel(new String[]{"Opening", "Purchase", "Total", "Consumption"}, 10) { @Override public Object getValueAt(int row, int col) { Object v

在“总计”列的所有单元格中显示计算数据

我不知道怎么做,当计算时,它会显示在总计列的所有单元格中

final DefaultTableModel model = new DefaultTableModel(new String[]{"Opening", "Purchase", "Total", "Consumption"}, 10) {
    @Override
    public Object getValueAt(int row, int col) {
        Object value = null;
        switch (col) {
            case 2:
                double opening = getAmountForRow(row);
                double purchase = getCostForRow(row);
                double cons=getconsForRow(row);
                value = opening + purchase-cons;
                break;
            default:
                value = super.getValueAt(row, col);
        }
        return value;
    }

    protected double getAmountForRow(int row) {
        return getNumberForRow(row, 0);
    }

    protected double getCostForRow(int row) {
        return getNumberForRow(row, 1);
    }

    protected double getconsForRow(int row) {
        return getNumberForRow(row, 3);
    }

    protected double getNumberForRow(int row, int col) {
        double number = 0;
        Object value = getValueAt(row, col);
        if (value != null && value instanceof Number) {
            number = ((Number) value).doubleValue();
        }
        return number;
    }

    @Override
    public void setValueAt(Object aValue, int row, int column) {
        if (column != 2) {
            if (aValue instanceof Number) {
                super.setValueAt(aValue, row, column);
                if (column == 0 || column == 1 || column==3) {
                    fireTableCellUpdated(row, 2);
                }
            }
        }
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return Double.class;
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        return column != 2;
    }
};

final JTable table = new JTable(model);
table.setFillsViewportHeight(true);
table.addMouseListener(new MouseAdapter() {
    // @Override
    public void mouseClicked(MouseEvent e) {
        if (e.getClickCount() == 2) {
            if (table.rowAtPoint(e.getPoint()) < 0) {
                StringBuffer fileContent = new StringBuffer();
                model.addRow(new Vector());
            }
        }
    }
});
model.addRow(new Vector());

JFrame frame = new JFrame("Chemical");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setIconImage(null);
frame.setSize(700,500);
// frame.setFont(new Font("Tahoma", Font.PLAIN, 15));
table.setFont(new Font("Tahoma", Font.PLAIN, 20));
final DefaultTableModel=new DefaultTableModel(新字符串[]{“期初”、“购买”、“总计”、“消费”},10){
@凌驾
公共对象getValueAt(整数行,整数列){
对象值=空;
开关(col){
案例2:
双开=getAmountForRow(row);
双重采购=按行计算成本;
双cons=getconsForRow(row);
价值=期初+采购成本;
打破
违约:
value=super.getValueAt(行、列);
}
返回值;
}
受保护的双getAmountForRow(int行){
返回getNumberForRow(第0行);
}
受保护的双getCostForRow(int行){
返回getNumberForRow(第1行);
}
受保护的双getconsForRow(int行){
返回getNumberForRow(第3行);
}
受保护的双getNumberForRow(整数行,整数列){
双数=0;
对象值=getValueAt(行、列);
if(value!=null&&value实例数){
数字=((数字)值).doubleValue();
}
返回号码;
}
@凌驾
public void setValueAt(对象有效、整行、整列){
如果(列!=2){
if(有效实例数){
super.setValueAt(aValue、row、column);
如果(列==0 | |列==1 | |列==3){
FireTableCell更新(第2行);
}
}
}
}
@凌驾
公共类getColumnClass(int columnIndex){
返回Double.class;
}
@凌驾
公共布尔值可编辑(int行,int列){
返回列!=2;
}
};
最终JTable表格=新JTable(模型);
表.setFillsViewPerthweight(真);
表.addMouseListener(新的MouseAdapter(){
//@覆盖
公共无效mouseClicked(MouseEvent e){
如果(如getClickCount()==2){
if(table.rowAtPoint(e.getPoint())<0){
StringBuffer fileContent=新的StringBuffer();
addRow(newvector());
}
}
}
});
addRow(newvector());
JFrame=新JFrame(“化学”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(新的JScrollPane(表));
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
frame.setIconImage(空);
框架设置尺寸(700500);
//frame.setFont(新字体(“Tahoma”,Font.PLAIN,15));
表.setFont(新字体(“Tahoma”,Font.PLAIN,20));

我不明白你的问题。你的代码对我有用。您能澄清一下您真正期望的是什么以及您得到的是什么吗?先生,我希望在添加期初+购买时,所有单元格中的总列数都是相同的,如总列数为零。我希望在将数据放入单元格时自动保存数据,并在再次打开程序后保留。对不起,我仍然不明白您到底想显示什么。所有行的列总数是否相同?即使其他列中的值不同?关于保存:添加触发数据保存的CellEditorListener。开始时,您可以读取数据并预填充模型。您能在这方面帮助我吗?celleditorlistener我想在关闭后保存并保留单元格上的所有数据