Guten Tag
Mein Java Wissen eigne ich mir mit Learning by Doing und den vielen Tuts und Filmchen, welche so im Netz herumschwirren an. Darüber hinaus habe ich weder seitens Ausbildung noch Beruf irgendetwas mit Programmierung zu tun.
Im Moment beschäftige ich mich mit JavaFX, genauer gesagt mit dem TreeView. Ich habe eine Hierarchische Struktur welche im TreeView korrekt angezeigt wird (Die Daten kommen aus einer Datenbank, sollte hier aber keine Rolle spielen). Bei Doppelklick, beziehungsweise beim Drücken der Taste F2 ändert sich das Label im TreeView in ein TextField, so dass man den Text ändern kann. Das klapplt prima mittels CellFactory. Nun zur eigentlichen Frage:
Ich möchte ich, wenn eine andere Taste gedrückt wird (z.B. '+'), dass nicht ein TextField, sonder eine ComboBox angezeigt wird. Mein erster Gedanke dazu ist es mehrere CellFactories zu erstellen, jedoch weiss ich nicht wie, beziehungsweise ob das überhaupt geht, oder ob es bessere Lösungsansätze gibt.
Hier die CellFactory und wie sie geladen wird. Falls ihr mehr Code braucht stelle ich den auch rein.
Mein Java Wissen eigne ich mir mit Learning by Doing und den vielen Tuts und Filmchen, welche so im Netz herumschwirren an. Darüber hinaus habe ich weder seitens Ausbildung noch Beruf irgendetwas mit Programmierung zu tun.
Im Moment beschäftige ich mich mit JavaFX, genauer gesagt mit dem TreeView. Ich habe eine Hierarchische Struktur welche im TreeView korrekt angezeigt wird (Die Daten kommen aus einer Datenbank, sollte hier aber keine Rolle spielen). Bei Doppelklick, beziehungsweise beim Drücken der Taste F2 ändert sich das Label im TreeView in ein TextField, so dass man den Text ändern kann. Das klapplt prima mittels CellFactory. Nun zur eigentlichen Frage:
Ich möchte ich, wenn eine andere Taste gedrückt wird (z.B. '+'), dass nicht ein TextField, sonder eine ComboBox angezeigt wird. Mein erster Gedanke dazu ist es mehrere CellFactories zu erstellen, jedoch weiss ich nicht wie, beziehungsweise ob das überhaupt geht, oder ob es bessere Lösungsansätze gibt.
Hier die CellFactory und wie sie geladen wird. Falls ihr mehr Code braucht stelle ich den auch rein.
Java:
@Override
public void initialize(URL location, ResourceBundle resources) {
loadInhalt();
loadListener();
loadCellFactory();
}
// ...
// Hier steht noch anderer Code
// ...
private void loadCellFactory() {
tw.setCellFactory(new Callback<TreeView<TreeData>, TreeCell<TreeData>>() {
@Override
public TreeCell<TreeData> call(TreeView<TreeData> param) {
cellText = new TextFieldTreeCell<TreeData>();
cellText.setConverter(new StringConverter<TreeData>() {
@Override
public String toString(TreeData td) {
return td.toString();
}
@Override
public TreeData fromString(String string) {
TreeData td = cellText.getItem();
if (td.isHersteller()) {
// TODO Prio0 - SQL Anweisung zum Ändern des
// Herstellers ausführen
td.getHersteller().herstellerProperty().set(string);
} else if (td.isHerstellerLinie()) {
// TODO Prio0 - SQL Anweisung zum Ändern der
// HerstellerLinie ausführen
td.getHerstellerLinie().herstellerLinieProperty().set(string);
}
return td;
}
});
// --------------------------------------------------
// Listener
// --------------------------------------------------
cellText.setOnKeyPressed((KeyEvent keyEvent) -> HandleKey(keyEvent));
cellText.setOnMouseClicked((MouseEvent mouseEvent) -> HandleMouse(mouseEvent));
return cellText;
}
});
}