私はプロジェクトの最後の部分に取り組んでいます。これは私が抱えている最後の問題の1つです。この部分は、予約を編集するためのものです。つまり、特定の予約のために予約された部屋を変更するためのものです。私は2つのJTableを持っています。1つは利用可能な部屋があり、もう1つはその予約のためにすでに予約されている部屋があります。どちらにも、個別のDefaultTableモデルと2Dオブジェクト配列があります。2つのテーブルの間に追加ボタンと削除ボタンがあり、選択した行を入れ替えます。
問題は、最初の追加/削除では正常に機能することですが、2D配列を更新していないと思います。別の行を追加する2回目の試行でも、モデルは元の2D配列を参照しています。これは、2D配列から行を削除しないため、間違った行データが表示されるためです。
選択した行を除外する一時的な2Dオブジェクト配列を作成するよりも、JTable / modelメソッドを使用してこの問題に対処する簡単な方法はありますか?
ActionPerformedコードを示す以下のサンプルコード。
if(e.getSource().equals(addRow)){
System.out.println(tableLeft.getSelectedRow());
if(tableLeft.getSelectedRow() == -1){ //if no row selected
}
else{
model.insertRow(tableRight.getRowCount(),array2dLeft[tableLeft.getSelectedRow()]);
modelLeft.removeRow(tableLeft.getSelectedRow());
modelLeft.fireTableRowsDeleted(tableLeft.getSelectedRow(),tableLeft.getSelectedRow());
txtTotalCost.setText("€" + getTotalCost());
}
}
if(e.getSource().equals(removeRow)){
if(tableRight.getSelectedRow() == -1){ //if no row selected
}
else{
modelLeft.insertRow(tableLeft.getRowCount(),array2dLeft[tableRight.getSelectedRow()]);
model.removeRow(tableRight.getSelectedRow());
txtTotalCost.setText("€" + getTotalCost());
}
}
}
しかし、私は2D配列を更新していないと思います。
2Dアレイにアクセスしてはいけません。配列は、最初にデータをテーブルモデルにロードするためにのみ使用する必要があります。次に、配列変数をnullに設定して、再度使用したくないようにすることができます。
その後、すべての更新は、のaddRow()
およびremoveRow()
メソッドを使用して、TableModelで直接実行する必要がありますDefaultTableModel
。
またgetValueAt(...)
、TableModelのメソッドを使用してモデルからデータを取得し、行データのベクトル(または配列)を作成して、データでaddRow()メソッドを使用できるようにする必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加