gpt4 book ai didi

java JTable,defaultTableModel想要addRow

转载 作者:行者123 更新时间:2023-12-02 08:17:11 25 4
gpt4 key购买 nike

我正在尝试像这样向 JTable 添加行

DefaultTableModel model = new DefaultTableModel();
try {
Builder builder = new Builder();
Document doc = builder.build(Config.PATH +"incasation.xml");

Element root = doc.getRootElement();
Elements childs = root.getChildElements("locations");

model.addColumn("Name");
model.addColumn("Total");
model.addColumn("Location fee");
model.addColumn("Bank");
model.addColumn("Tax");

float baseSum = 0;
float locationSum = 0;
float bankSum = 0;
float taxSum = 0;

for(int i=0; i< childs.size(); i++)
{
Element child = childs.get(i);

model.addRow(new Object[] {
child.getFirstChildElement("name").getValue(),
child.getFirstChildElement("base").getValue(),
child.getFirstChildElement("locationfee").getValue(),
child.getFirstChildElement("bank").getValue(),
child.getFirstChildElement("tax").getValue()
});


baseSum += Float.parseFloat(child.getFirstChildElement("base").getValue());

locationSum += Float.parseFloat(child.getFirstChildElement("locationfee").getValue());
bankSum += Float.parseFloat(child.getFirstChildElement("bank").getValue());
taxSum += Float.parseFloat(child.getFirstChildElement("tax").getValue());

}


model.addRow(new Object[] {
"SUM",
Float.toString(baseSum),
Float.toString(locationSum),
Float.toString(bankSum),
Float.toString(taxSum)
});

}
catch(Exception e){}

在这种情况下,JTable 只获取第一行,所以我尝试这样

DefaultTableModel model = new DefaultTableModel();
try {
Builder builder = new Builder();
Document doc = builder.build(Config.PATH +"incasation.xml");

Element root = doc.getRootElement();
Elements childs = root.getChildElements("locations");

model.addColumn("Name");
model.addColumn("Total");
model.addColumn("Location fee");
model.addColumn("Bank");
model.addColumn("Tax");

float baseSum = 0;
float locationSum = 0;
float bankSum = 0;
float taxSum = 0;

for(int i=0; i< childs.size(); i++)
{
Element child = childs.get(i);

model.addRow(new Object[] {
child.getFirstChildElement("name").getValue(),
child.getFirstChildElement("base").getValue(),
child.getFirstChildElement("locationfee").getValue(),
child.getFirstChildElement("bank").getValue(),
child.getFirstChildElement("tax").getValue()
});

}

for(int j=0; j< childs.size(); j++)
{
Element child = childs.get(j);

baseSum += Float.parseFloat(child.getFirstChildElement("base").getValue());
locationSum += Float.parseFloat(child.getFirstChildElement("locationfee").getValue());
bankSum += Float.parseFloat(child.getFirstChildElement("bank").getValue());
taxSum += Float.parseFloat(child.getFirstChildElement("tax").getValue());
}

model.addRow(new Object[] {
"SUM",
Float.toString(baseSum),
Float.toString(locationSum),
Float.toString(bankSum),
Float.toString(taxSum)
});

}
catch(Exception e){}

在这种情况下,最后一行未添加。如何解决这个问题?

编辑我发现解决方案之一的值是空字符串,这就是没有总和的原因。应该是这样的

String base = child.getFirstChildElement("base").getValue();
baseSum += Float.parseFloat(base.equals("") ? "0" : base);

最佳答案

您已经编辑了问题并提供了解决方案。然而,解决方案并不明显,因为抛出了一个被捕获并忽略的异常。

这是一个很好的例子,说明了为什么这行代码可能会出现问题:

catch(Exception e){}

我建议至少执行一个e.printStackTrace(),这样最坏情况下的调试会更容易。

关于java JTable,defaultTableModel想要addRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com