Eine Aktion zu erhalten, nachdem Text in eine jTextComponent (Java) eingefügt wird
-
23-10-2019 - |
Frage
Das verwirrt mich wirklich.
Ich habe ein JTextComponent
für das ich mit einem JPOPUPMENU und einem Menü mit der rechten Maustaste copy einfügen habe DefaultEditorKit.Cut\Copy\PasteAction()
.
JMenuItem cutItem = new JMenuItem(new DefaultEditorKit.CutAction());
JMenuItem copyItem = new JMenuItem(new DefaultEditorKit.CopyAction());
JMenuItem pasteItem = new JMenuItem(new DefaultEditorKit.PasteAction());
Für jede Aktion habe ich einen Action -Listener hinzugefügt, der den Text des JTextComponent -Textes greift, den ich in einer Funktion verwenden möchte.
final ActionListener textFieldListener = new ActionListener() {
@Override public void actionPerformed(ActionEvent e){someGlobalFunction(textComponent.getText());
}
};
...
cutItem.addActionListener(textFieldListener );
copyItem.addActionListener(textFieldListener );
pasteItem.addActionListener(textFieldListener );
Der einzige Text, den ich erhalten kann, ist jedoch die Zeichenfolge, die es war Vor Ich schneide Einfüge in die Komponente, nicht danach.
Gibt es eine offensichtliche Lösung dafür?
Lösung
Wickeln Sie den Code in die actionPerformed () -Methode in eine Swingutilities.
Andere Tipps
Es liegt daran, dass Sie Ihr Textfeld nicht anhören, Sie das Menü hören :-)
Setzen Sie einen Hörer in Ihr Textfeld oder in das Dokument Ihres Textfelds oder möglicherweise ein Filterdokument oder sogar Ihr eigenes Dokument.