Guten Tag, ich bin völlig neu in der Codierung. Ich baue eine App, die neben anderen Bibliothekselementen eine Combobox verwendet. Das Problem, dem ich gegenüberstehe, ist, dass beim Versuch, Combobox-Elemente aus einem Mysql-Db zu füllen, die Elementwerte jedes Mal dupliziert werden, wenn auf das Dropdown-Menü geklickt wird.JavaFx Combobox von Mysql
Wie kann ich das verhindern? Ich verstehe, dass mein Ansatz selbst falsch sein könnte.
@FXML
public void getStation() {
String sqlStationName = " select * from station ";
try {
conn = (Connection) DBConnection.connect();
PreparedStatement pstStn = conn.prepareStatement(sqlStationName);
ResultSet stnRS = pstStn.executeQuery(sqlStationName);
while (stnRS.next()) {
comboBoxStation.getItems().add(stnRS.getString("stationName"));
}
stnRS.close();
pstStn.close();
conn.close();
} catch (SQLException ex) {
System.err.println("ERR" + ex);
}
}
vielleicht könnten Sie versuchen, die Elemente zu löschen, bevor Sie mehr hinzufügen. Ich bin mir aber nicht sicher, ob du wirklich bei jedem Klick abfragen willst, es scheint ein leichter Overkill imo zu sein. –
Wie verwenden Sie die 'getStation' Methode? '@ FXML' (obwohl dies für öffentliche Methoden unnötig ist) könnte darauf hindeuten, dass Sie es als Event-Handler aus der fxml-Datei verwenden. Fügen Sie Informationen hinzu, wie diese Methode für die Frage verwendet wird. – fabian
Vielen Dank für Ihre Antworten @ el_chupacabra Ihre Beobachtung ist richtig, ich möchte nicht wirklich bei jedem Klick abfragen, ich möchte nur, dass die Elemente angezeigt werden, wenn der Benutzer auf die Combobox-Schaltfläche klickt und dann zurückgesetzt oder gelöscht wird, wenn die Liste ist geschlossen. Fabian ja die @ FXML Verwendung ist ein Anfängerfehler, die Methode wird per Mausklick aufgerufen. –