这真的让我感到困惑。

我有一个 JTextComponent 为此,我添加了使用jpopupmenu和 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());

对于每个动作,我都添加了一个操作侦听器,该操作侦听器抓住了JTEXTCOMPONENT的文本,我想在功能中使用。

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

...

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

但是,我唯一能保留的文字是它是字符串 我将粘贴切入组件,而不是之后。

有明显的解决方案吗?

有帮助吗?

解决方案

将代码包裹在ActionPerformed()方法中的swingutilities.invokelater(...)中,这将在EDT的结尾中添加代码,以便在剪切/复制/粘贴命令之后执行。

其他提示

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

在您的文本字段,文本字段,也许是过滤器文档,甚至是您自己的文档上放置侦听器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top