Java 默认表模型的问题
我正在创建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
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不,刚刚测试过。我有两个其他操作删除和添加行。从文本文件读取后>删除所有行>并添加所有新行。所以整个表的数据都被清理了,它仍然不计算总和,只计算前三行的总和。再见,这似乎是个问题。非常感谢。