Итак, в приложении я создал страницу search for name
, где пользователь вводит там имя и как user types
(при каждом нажатии клавиши) запускается инструкция SQL
, которая получит записи like 'name%'
.Java TableModel дублирующие строки - Как остановить это?
Это прекрасно работает, но когда дело доходит до ввода значений в table
каждый раз, когда пользователь нажимает клавишу, append
найденные результаты в таблице вместо замены значений. Значение каждый раз, когда нажата клавиша ... генерируются повторяющиеся строки.
Так что мне было интересно, есть ли у кого-нибудь решение остановить дублирующиеся строки и вместо этого заменить новыми значениями? Im используя модель таблицы по умолчанию:
private DefaultTableModel tModel = new DefaultTableModel(0, 0);
Мой код:
@Override
public void keyReleased(KeyEvent e) {
updateTable();
table.setModel(tModel);
formPanel.add(table);
tModel.fireTableDataChanged();
}
public void updateTable(){
System.out.println("Save member 1");
try{
//CHANGE THE VALUES SO WHEN CLICKS SAVE MEM
/*-------------------------------------*/
//Connection + Statement
conDB = getConnection();
stmt = conDB.createStatement();
String searchSql = "select * from members where name "
+ " LIKE '" + txtName.getText() +"%'";
if(!txtName.getText().equals(""))
{
r = stmt.executeQuery(searchSql);
}
System.out.println("searching");
tModel.setColumnIdentifiers(columnNames);
while(r.next()){
tModel.addRow(new Object[] {
r.getString("name")
});
}
}
catch(SQLException er){
System.out.println("Error was: " + er);
}
}
public searchBoth(){
super("Search");
this.setBounds(400, 500, 854,400);
this.setVisible(true);
mainCon.add(formPanel);
formPanel.add(lblName);
formPanel.add(txtName);
txtName.addActionListener(this);
addKeyListener(this);
txtName.addKeyListener(this);
}
для лучшей помощи, скорее всего, отправьте сообщение SSCCE/MCVE, краткое, выполнимое, компилируемое. – mKorbel
1. ничего здесь не говорило о табличной модели, 2. почему причины KeyEvents запускают JDBC, 3. XxxTableModel является оправданным, 4. почему существует formPanel. add (table) ;, 5. Почему существует tModel.fireTableDataChanged(); – mKorbel