Bonjour les gars, j'essaie d'apprendre la programmation java et puis je rencontre un problème que je ne sais pas pourquoi avec mon code quand j'apprends à propos de JTable. Donc, ce que j'essaye de faire est quand j'ai double cliqué sur la rangée dans JTable nommé TableGejala, la rangée que j'ai double cliqué sera transférée dans l'autre JTable nommé TableAturan et après que la rangée que j'ai double cliqué dans TableGejala sera supprimé. Pour la partie de transfert de ligne de TableGejala à TableAturan transféré avec succès lorsque j'ai double-cliqué sur la ligne, mais il ne supprime pas la ligne correcte dans TableGejala. Au lieu de supprimer la ligne sur laquelle j'ai cliqué, il supprime la ligne en dessous.Comment faire pour supprimer correctement la ligne dans JTable avec double clic?
Pour plus de détails, voici mon code pour créer TableGejala:
private void getTableGejala() {
while(tabel2.getRowCount() > 0){
for(int i=0;i < tabel2.getRowCount();i++){
tabel2.removeRow(i);
}
}
tabel2.addColumn("ID Gejala");
tabel2.addColumn("Nama Gejala");
TabelGejala.setModel(tabel2);
TabelGejala.setAutoResizeMode(TabelGejala.AUTO_RESIZE_ALL_COLUMNS);
}
Et ceci est mon code pour obtenir des données pour ma table de MySQL:
private void loadDataGejala(Boolean baru){
tabel2.getDataVector().removeAllElements();
try {
java.sql.Connection konek = (Connection) Koneksi.KoneksiDB.getConnection();
java.sql.Statement konek_statement = konek.createStatement();
String query_bukaTabel = "";
if(baru){
query_bukaTabel = "select id_gejala,nama_gejala from gejala";
}
else{
String idPkt = FieldID.getText();
query_bukaTabel = "select gejala.id_gejala,gejala.nama_gejala from gejala where gejala.id_gejala not in(select id_gejala from aturan2 where id_penyakit='"+idPkt+"')";
}
java.sql.ResultSet line_result = konek_statement.executeQuery(query_bukaTabel);
while (line_result.next()) {
Object[] getO = new Object[2];
getO[0] = line_result.getString("id_gejala");
getO[1] = line_result.getString("nama_gejala");
tabel2.addRow(getO);
}
line_result.close();
konek_statement.close();
}catch (Exception e) {}
}
Ceci est mon code transférer la ligne et supprimer la ligne:
private void TabelGejalaMousePressed(java.awt.event.MouseEvent evt) {
if (evt.getClickCount()>=2){
int col = 0;
int row = 0;
row = TabelGejala.rowAtPoint(evt.getPoint());
col = TabelGejala.columnAtPoint(evt.getPoint());
String col1 = (String)TabelGejala.getValueAt(row, 0);
String col2 = (String)TabelGejala.getValueAt(row, 1);
DefaultTableModel model = (DefaultTableModel) TabelAturan.getModel();
DefaultTableModel old = (DefaultTableModel) TabelGejala.getModel();
old.removeRow(row);
model.addRow(new Object[]{col1, col2, 0});
TabelAturan.requestFocus();
TabelAturan.setRowSelectionInterval(TabelAturan.getRowCount()-1,TabelAturan.getRowCount()-1);
TabelAturan.editCellAt(TabelAturan.getRowCount()-1,2);
}
}
et voici la capture d'écran de mon problème:
Quelle partie qui fait ma sortie obtenir la mauvaise ligne à supprimer? S'il vous plaît aidez-moi, et je vous remercie d'avance pour toute aide, même pour lire ma question :)
AAAH I SEEE! Je vous remercie beaucoup pour votre aide :) –