Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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_Jtable_Tablemodel - Fatal编程技术网

Java 默认表模型的问题

Java 默认表模型的问题,java,jtable,tablemodel,Java,Jtable,Tablemodel,我正在创建java可编辑表,面临着一个问题:它在读取数据后“崩溃”。这是我的桌子: table.getTableHeader().setReorderingAllowed(false); tableModel = new DefaultTableModel(new Object[] {"#","1","2","3","4","5","6","7"},8); table.setModel(tableModel); table.getColumnModel().getColumn(0).setMax

我正在创建java可编辑表,面临着一个问题:它在读取数据后“崩溃”。这是我的桌子:

table.getTableHeader().setReorderingAllowed(false);
tableModel = new DefaultTableModel(new Object[]
{"#","1","2","3","4","5","6","7"},8);
table.setModel(tableModel);
table.getColumnModel().getColumn(0).setMaxWidth(22);
从txt读取:

OK4.addActionListener(new ActionListener(){
    @Override
    File f = new File(fileName);
    if(f.exists()){
        try {
            tableModel = new DefaultTableModel(new Object[]{"#","1","2","3","4","5","6","7"},0);
            BufferedReader br = new BufferedReader(new FileReader(fileName));
            String line = br.readLine();
            String[] colHeaders = line.split("\\s+");
            tableModel.setColumnIdentifiers(colHeaders);
            while ((line = br.readLine()) != null) {
                String[] data = line.split("\\s+");
                tableModel.addRow(data);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }else{
        JOptionPane.showMessageDialog(null, "this day is not saved");
    };
    table.setModel(tableModel);
    table.getColumnModel().getColumn(0).setMaxWidth(22);
});
以及导致我的总和字段的主要问题:

OK3.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        int sum=0;
        int number;
        Object smth;
        String Smth;
        int kint2 = table.getRowCount()-1;
        if(table.getValueAt(kint2, 1)=="total:"){

        }else{
            tableModel.addRow(new Object[]{});
            int a = table.getRowCount()-1;
            table.setValueAt("total:", a, 1);
        }
        for (int j = 2; j < 8; j++) {
            for (int i = 0; i < table.getRowCount()-1; i++) {
                smth = table.getValueAt(i,j);
                Smth = (String) smth;
                if (smth==null){
                    number=0;
                }else{
                    number=Integer.parseInt(Smth);
                }
                sum=sum+number;
            }
            table.setValueAt(sum, table.getRowCount()-1, j);
            sum=0;
        }
    }
});
OK3.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
整数和=0;
整数;
对象smth;
字符串Smth;
int kint2=table.getRowCount()-1;
如果(表.getValueAt(kint2,1)=“总计:”){
}否则{
addRow(新对象[]{});
int a=table.getRowCount()-1;
表.setValueAt(“总计:”,a,1);
}
对于(int j=2;j<8;j++){
对于(int i=0;i
应用程序在从txt读取后停止计算总和,或仅计算前4行总和。与我的
表格模型
有关吗


谢谢您的回答。

问题在于您使用tablemodel添加新行,并使用table统计行数。如“”中所述,您的表不会更新行数,因此始终使用tablemodel.getRowCount()

控制台中显示的错误消息是什么。我认为问题出在parseInt。您使用了split和readLine(),但无法确保“Smth”中没有特殊字符。尝试先删除“\n”并修剪()。无错误。只是OK3覆盖事件崩溃。我的意思是,如果使用OK2,它将停止计算总和。您是否同时使用它们?我在想tablemodel.getRowCount()中的一个bug不,刚刚测试过。我有两个其他操作删除和添加行。从文本文件读取后>删除所有行>并添加所有新行。所以整个表的数据都被清理了,它仍然不计算总和,只计算前三行的总和。再见,这似乎是个问题。非常感谢。