Meine hoffentlich letzte offene Frage zum Umgang mit JTrees.
Ich habe einen TreeCellEditor implementiert. Er besteht nur aus einem JTextField (ist eigentlich selbst eins). Wenn ein Knoten zum Editieren aktiv ist kann der User also schön seinen Text eingeben. Klickt er irgendwo anders hin, wird standartmäßig die Eingabe abgebrochen. Dies entspricht FocusAdapter.focusLost(). Nun möchte ich aber nicht, dass das Editieren dadurch abgebrochen wird. Ich habe also meiner Klasse im Konstruktor den Code hinzugefügt:
Leider wird schon vorher immer TreeCellEditor.cancelCellEditing() aufgerufen und die Eingabe somit abgebrochen. Danach kommt das Programm noch in meine Funktion focusLost(), aber dann ist es ja schon zu spät. Wie behebe ich diese Problem?
Ich habe einen TreeCellEditor implementiert. Er besteht nur aus einem JTextField (ist eigentlich selbst eins). Wenn ein Knoten zum Editieren aktiv ist kann der User also schön seinen Text eingeben. Klickt er irgendwo anders hin, wird standartmäßig die Eingabe abgebrochen. Dies entspricht FocusAdapter.focusLost(). Nun möchte ich aber nicht, dass das Editieren dadurch abgebrochen wird. Ich habe also meiner Klasse im Konstruktor den Code hinzugefügt:
Code:
class TextFieldEditor extends JTextField implements TreeCellEditor
{
// die Liste aller registrierten Listener
private ArrayList<CellEditorListener> mListeners = new ArrayList<CellEditorListener>();
public TextFieldEditor()
{
super();
this.addFocusListener(new FocusAdapter()
{
public void focusLost(FocusEvent pFE)
{
TextFieldEditor.this.stopCellEditing();
System.out.println("Test");
}
});
}
// ...