将文本粘贴到JTextComponent后获取操作(Java)

将文本粘贴到JTextComponent后获取操作(Java),java,swing,actionlistener,jtextcomponent,Java,Swing,Actionlistener,Jtextcomponent,这真让我困惑 我有一个JTextComponent,我使用JPOppMenu和DefaultEditorKit.cut\copy\PasteAction()为它添加了一个右键单击的剪切\复制\粘贴菜单 对于每个动作,我都添加了一个动作监听器,该监听器将捕获我希望在函数中使用的JTextComponent的文本 final ActionListener textFieldListener = new ActionListener() { @Override public void actionPe

这真让我困惑

我有一个
JTextComponent
,我使用JPOppMenu和
DefaultEditorKit.cut\copy\PasteAction()
为它添加了一个右键单击的剪切\复制\粘贴菜单

对于每个动作,我都添加了一个动作监听器,该监听器将捕获我希望在函数中使用的JTextComponent的文本

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

但是,我唯一能保留的文本是剪切\粘贴到组件之前的字符串,而不是之后的字符串


有什么明显的解决办法吗?

这是因为你不听文本字段,而是听菜单:-)


将侦听器放在您的文本字段、文本字段的文档、筛选文档甚至您自己的文档上。

这是因为您不侦听文本字段,而是侦听菜单:-)


将侦听器放在您的文本字段、文本字段的文档、FilterDocument甚至您自己的文档上。

将actionPerformed()方法中的代码包装在SwingUtilities.invokeLater(…)中,这会将代码添加到EDT的末尾,以便在剪切/复制/粘贴命令之后执行。

将代码包装在SwingUtilities.invokeLater(…)中的actionPerformed()方法中,这会将代码添加到EDT的末尾,以便在剪切/复制/粘贴命令之后执行

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