Java TableModel 重复行 - 如何阻止这种情况发生?
Java TableModel duplicating rows - How do I stop this from happening?
所以在应用程序中我创建了一个 search for name
页面,用户将在其中输入名称,并且作为 user types
(每次按下一个键)一个 SQL
语句运行 将获得记录 like 'name%'
.
这很好用,但是当涉及到将值放入 table
时,每次用户按下一个键时,它 append
找到的结果到 table 而不是替换值.意思是每次按下一个键...都会生成重复的行。
所以我想知道是否有人有解决方案来阻止行被复制并替换为新值?我使用默认 table 模型:
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);
}
将 rowCount
设置为 0 并添加行。这将删除现有行并添加新行
tModel.setRowCount(0);
代码
System.out.println("searching");
tModel.setRowCount(0);// *********************remove current rows to replace
tModel.setColumnIdentifiers(columnNames);
while(r.next()){
tModel.addRow(new Object[] {
r.getString("name")
});
}
所以在应用程序中我创建了一个 search for name
页面,用户将在其中输入名称,并且作为 user types
(每次按下一个键)一个 SQL
语句运行 将获得记录 like 'name%'
.
这很好用,但是当涉及到将值放入 table
时,每次用户按下一个键时,它 append
找到的结果到 table 而不是替换值.意思是每次按下一个键...都会生成重复的行。
所以我想知道是否有人有解决方案来阻止行被复制并替换为新值?我使用默认 table 模型:
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);
}
将 rowCount
设置为 0 并添加行。这将删除现有行并添加新行
tModel.setRowCount(0);
代码
System.out.println("searching");
tModel.setRowCount(0);// *********************remove current rows to replace
tModel.setColumnIdentifiers(columnNames);
while(r.next()){
tModel.addRow(new Object[] {
r.getString("name")
});
}