Pregunta

Esto realmente me desconcierta.

tengo un JTextComponent para el cual he agregado un menú de corte copiar pegar con el clic derecho con un jpopupmenu y 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());

Para cada acción, agregué un oyente de acción que toma el texto de JTextComponent, que quiero usar en una función.

final ActionListener textFieldListener = new ActionListener() {
@Override public void actionPerformed(ActionEvent e){someGlobalFunction(textComponent.getText());
}
}; 

...

cutItem.addActionListener(textFieldListener );
copyItem.addActionListener(textFieldListener );
pasteItem.addActionListener(textFieldListener );

Sin embargo, el único texto que puedo aferrar es la cadena que era antes de Corto Pegar en el componente, no después.

¿Hay alguna solución obvia para esto?

¿Fue útil?

Solución

Envuelva el código en el método ActionPerformed () en A swingUtility.invokelater (...), esto agregará el código al final del EDT para que debe ejecutarse después de los comandos de corte/copiar/pegar.

Otros consejos

Es porque no escuchas tu campo de texto, escuchas el menú :-)

Coloque un oyente en su campo de texto, o en el documento de su campo de texto, o tal vez un FilterDocument, o incluso su propio documento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top