-3

JTable から 1 行を削除して更新する方法を理解するためにほぼ 2 時間試みましたが、どういうわけかうまくいきません。次のコードを使用します。

DefaultTableModel modelTable = (DefaultTableModel) jTabelRooster.getModel();

modelTable.addRow(new Object[]{lid.getLidnummer().toString(), lid.getLidvoornaam(), lid.getLidtussenvoegsel(),lid.getLidachternaam(), lid.getAanwezig()});

これまでのところ良い..行はうまく追加されています..しかし、今はそれらを削除したいと思います:

int SelectedRow = jTabelRooster.getSelectedRow();
modelTable.removeRow(SelectedRow);

これを行うと、次のエラーが発生します: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2

あなたの助けをいただければ幸いです

編集: jTabelRooster は、GUI レイアウト マネージャーによって挿入されました。

private void initRoosterDetail()
{
   for(int i = 0; i < leden.size(); i++)
        {
            lid = leden.get(i);

            modelTable.addRow(new Object[]{lid.getLidnummer().toString(), lid.getLidvoornaam(), lid.getLidtussenvoegsel(),lid.getLidachternaam(), lid.getAanwezig()});

        }
}
private void jbInschrijvingVerwijderenActionPerformed(java.awt.event.ActionEvent evt) {                                                          
        int SelectedRow = jTabelRooster.getSelectedRow();
        modelTable.removeRow(jTabelRooster.convertRowIndexToModel(SelectedRow));
  }  

これに違いない:)

テーブルの 1 行を選択してキャンセルボタンを押すと、次のメッセージが表示されます。

スレッド「AWT-EventQueue-0」での例外 java.lang.ArrayIndexOutOfBoundsException: 2 >= 2

================================================== ================================================== ================================================== ================================================== ================================================== ================================================== ============================

助けてくれてありがとう...私が間違ったことを知っています...それは私が使用したtableModelListenerと関係がありました..だから、これは私に別の問題を残しました:)

 jTabelRooster.getModel().addTableModelListener(
        new TableModelListener()
        {
        public void tableChanged(TableModelEvent evt) 
        {
             if(jTabelRooster.getSelectedColumn() == 4)
             {
              }
    }

});

このコードは、deleterow コマンドを台無しにしていました。

チェックボックスが入ったブール列が1つあります:(

4

2 に答える 2

2

このコードに基づいて言えることは次のとおりです。

private void jbInschrijvingVerwijderenActionPerformed(java.awt.event.ActionEvent evt) {                                                          
    int SelectedRow = jTabelRooster.getSelectedRow();
    modelTable.removeRow(jTabelRooster.convertRowIndexToModel(SelectedRow));
}

そしてこのエラー:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2

modelTable によって保持されている TableModel が、jTabelRooster JTable によって保持されている実際のモデルと何らかの形で同期していないということです。JTable で選択した行は 3 行目の行番号 2 ですが、modelTable が保持するモデルは 2 行しか保持していないことを示しているため、これがわかりました。これまでに提供された限られた情報に基づいて、これがどのように、またはなぜ発生しているのかを推測することは不可能です.

繰り返しますが、 sscceを作成して投稿することを強く検討する必要があります。

于 2013-06-22T23:31:28.083 に答える