Deutschland ist im Viertelfinale und ich hoffe jemand kann mir helfen.
Ich habe eine Tabelle und möchte diese anhand von IDs durchsuchen. Dazu habe ich ein JTextField mit einem DocumentListener versehen, das Ganze sieht im Moment so aus:
Bei dieser Variante funktioniert der Abbruch nich. Was ich möchte ist: Das der aktuelle Task unterbrochen wird, wenn man eine weitere Zahl in das Textfeld schreibt und mit der neuen (aktuellen) ID eine neue Suche beginnt.
MfG TheR
Ich habe eine Tabelle und möchte diese anhand von IDs durchsuchen. Dazu habe ich ein JTextField mit einem DocumentListener versehen, das Ganze sieht im Moment so aus:
Java:
JTextField id = new JTextField();
id.getDocument().addDocumentListener(new DBSearch(this));
Java:
public class DBSearch implements DocumentListener {
private SwingWorker<String, Void> worker;
private JPanel panel;
private String query;
final String queryPraefix = "SELECT * FROM `Data` WHERE `ID` LIKE '";
public DBSearch(JPanel panel) {
this.panel = panel;
}
@Override
public void insertUpdate(DocumentEvent e) {
search(panel.getID());
}
@Override
public void removeUpdate(DocumentEvent e) {
search(panel.getID());
}
@Override
public void changedUpdate(DocumentEvent e) {
search(panel.getID());
}
private void search(String input) {
if (worker != null) worker.cancel(true);
if (!input.isEmpty()) input = input + "%";
query = queryPraefix + input+ "';";
worker = new SwingWorker<String, Void>(){
@Override
protected String doInBackground(){
ResultSet rs = DBConnector.getInstance().getQueryResult(query);
int i = 0;
try {
while (rs.next() ) {
i++; // hier lass ich mir alle passenden IDs ausgeben
}
} catch (SQLException e) {
e.printStackTrace();
}
return "";
}
};
worker.execute();
}
}
Bei dieser Variante funktioniert der Abbruch nich. Was ich möchte ist: Das der aktuelle Task unterbrochen wird, wenn man eine weitere Zahl in das Textfeld schreibt und mit der neuen (aktuellen) ID eine neue Suche beginnt.
MfG TheR
Zuletzt bearbeitet: