gpt4 book ai didi

Java:如何使用加速器创建粘贴菜单项?

转载 作者:行者123 更新时间:2023-12-01 16:00:18 25 4
gpt4 key购买 nike

当我创建一个包含粘贴操作的 JMenuBar 并为其分配加速器 (Control - V) 时,我为 JMenuItem 编写粘贴操作。而且我使用加速器,我的代码将被执行,并且 Swing 预编程的粘贴操作将被执行,因此我认为文本将被粘贴两次。

我没有测试它,但是,这看起来很合乎逻辑,这就是问题所在。

谢谢

最佳答案

Swing 通过使用键绑定(bind)来工作。因此,根据找到的键绑定(bind),仅调用一个操作。所以你不会将文本粘贴两次。

您可能会调用不同的操作,具体取决于哪个组件具有焦点以及操作的调用方式。

例如,如果焦点位于文本组件上,那么我猜测将使用默认的粘贴操作。

如果您单击菜单项,则会调用您添加到菜单项的操作。

如果您在焦点不在文本字段上时调用 Control+V,那么我猜会调用绑定(bind)到菜单项的操作,因为加速器使用“焦点窗口”(或任何名称)InputMap。

如果您使用 EditorKit 提供的默认操作,则不会有问题:

JMenuItem pasteAction = new JMenuItem( new DefaultEditorKit.PasteAction() );
pastAction.setAccelerator(...);

关于Java:如何使用加速器创建粘贴菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4136458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com