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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top