JTableのTableModelListenerを使用しています。今、jtableは値をうまく取得できます。選択された行の最後の列の値を設定することになります。それはちょうど間違っているかどうか分かりません。ネットビーンのエラーは見られないので、何を考えたらいいのか分かりません。このため、if文が値を設定するという点ではまったく機能しているかどうかはわかりません。これを行うために何か他のものを使用したり、すべきことはありますか? 更新:無限ループのようです。コードを編集してUpdateテーブルのイベントをチェックするが、同じ問題が残っているかどうかを確認する。リスナーの実行後に値を列に設定するJava Jtableエラー
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);
}
}
}
getSelectedRow()メソッドを使用しないでください。コードはTableModelListenerで実行されています。あなたは、あなたのループ問題を解決した元の答えで示されているように、TableModelEventの値を使用する必要があります。 – camickr
@camickr確かに、おっと。私はそれを見渡した... –