課金ソフトウェアを作成しています。JTableのitems列に入力された値と一致するデータベースのアイテム名を表示したいと思います。これを実現するために、KeyListenerを追加しました。最初のキーに対してのみ、keypressedイベントがトリガーされることを除いて、すべてが正常に機能します。エンターキーを押してもう一度入力すると、もう一度トリガーされます。列に継続的に入力されるすべてのキーに対してキーイベントがトリガーされるようにしたいのですが、誰かが私を助けてくれますか?
コードスニペットを提供します...DBのアイテムをitableで表示したい...
public void keyPressed(KeyEvent e) {
rows=table.getSelectedRow();
cols=table.getSelectedColumn();
if(cols==2){
String code=(String)table.getValueAt(rows, cols);
Statement stmt = null;
ResultSet rs = null;
for (int i =model1.getRowCount();i>0; i--) {
model1.removeRow(i-1);
}
table.changeSelection(rows,cols, false, false);
itable.setVisible(true);
int i=0;
String SQL = "SELECT * FROM items where name like\'"+code+"%\' or
code=\'"+code+"\' order by name";
try{
stmt = (Statement) dbcon.con.createStatement();
rs = stmt.executeQuery(SQL);
while (rs.next()) {
model1.insertRow((i),new Object[]{""});
itable.setValueAt((Object)rs.getString("name"), i, 0);
i++;
}
}
catch(Exception e1){
table.editCellAt(rows,cols,null);
return;
}}
}