【发布时间】:2016-11-01 14:35:25
【问题描述】:
我正在为 JTable 开发 TableModelListener。现在 jtable 可以很好地获取值。但是当涉及到设置所选行的最后一列的值时。它变得不稳定,不确定是什么错误,它只是挂断了。在 netbeans 上没有看到任何错误,所以不知道该怎么想。因此,我什至不确定 if 语句在设置值方面是否有效。我应该使用还是做其他事情才能发生这种情况? 更新:它似乎是一个无限循环。将代码编辑为检查更新表事件的建议,但仍然存在同样的问题。 下面是代码:
public class MyListener implements TableModelListener {
@Override
public void tableChanged(TableModelEvent tme) {
if (tme.getType() == TableModelEvent.UPDATE)
{
int rowcount = jDetailSubmitTable.getSelectedRow();
// Initial return when table is starting to be filled.
if(rowcount == -1 )
{
return;
}
int com = tme.getColumn();
// Number being Validated.
if(jDetailSubmitTable.getModel().getValueAt(rowcount, com).toString().trim().isEmpty())
{
JOptionPane.showMessageDialog(null, "Invaid Number selected.");
jDetailSubmitTable.getModel().setValueAt("0", rowcount, com);
return;
}
try
{
Double.parseDouble(jDetailSubmitTable.getModel().getValueAt(rowcount, com).toString().trim());
}
catch(NumberFormatException e)
{
JOptionPane.showMessageDialog(null, "Invaid Number selected.");
jDetailSubmitTable.getModel().setValueAt("0", rowcount, com);
return;
}
// Adjusted amount is calculated below.
double nur = Double.parseDouble(jDetailSubmitTable.getModel().getValueAt(rowcount, 9).toString().trim());
double our = Double.parseDouble(jDetailSubmitTable.getModel().getValueAt(rowcount, 8).toString().trim());
double diff = nur - our;
double nunits = Double.parseDouble(jDetailSubmitTable.getModel().getValueAt(rowcount, 11).toString().trim());
double ans = diff * nunits;
jDetailSubmitTable.getModel().setValueAt(ans, rowcount, 12);
}
}
}
【问题讨论】:
标签: java swing netbeans jtable