gpt4 book ai didi

java - 粘贴菜单项,附加到 JTextField 时不执行任何操作

转载 作者:太空宇宙 更新时间:2023-11-04 06:41:12 26 4
gpt4 key购买 nike

我有一个 JTextField,由于 Swing 内置支持,使用 Cntl-V 可以自动粘贴。但我还需要一个弹出菜单来帮助不太熟悉快捷键的用户。代码如下

import javax.swing.*;
import java.awt.*;

public class TestPopup
{
public static void main(final String[] args)
{
JFrame frame = new JFrame();
JTextField widget = new JTextField(50);
final JPopupMenu popup = new JPopupMenu();
popup.add(widget.getActionMap().get("paste"));
widget.add(popup);
widget.setComponentPopupMenu(popup);
frame.add(widget);
frame.pack();
frame.setVisible(true);
}
}

显示粘贴选项,但选择后不执行任何操作。另请注意,显示为“粘贴”而不是“粘贴”

我做错了什么?

* 解决方案 *

没关系,让它工作,使用 DefaultEditorKit.pasteAction 而不是“粘贴”使粘贴起作用,(我不清楚“粘贴”操作实际上存在什么作用)

import javax.swing.*;
import javax.swing.text.DefaultEditorKit;
import java.awt.*;

public class TestPopup
{
public static void main(final String[] args)
{
JFrame frame = new JFrame();
JTextField widget = new JTextField(50);
final JPopupMenu popup = new JPopupMenu();
popup.add(widget.getActionMap().get(DefaultEditorKit.pasteAction));
widget.add(popup);
widget.setComponentPopupMenu(popup);
frame.add(widget);
frame.pack();
frame.setVisible(true);
}
}

但这并不能解决名称问题,为此我引入了菜单项

import javax.swing.*;
import javax.swing.text.DefaultEditorKit;
import java.awt.*;

public class TestPopup
{
public static void main(final String[] args)
{
JFrame frame = new JFrame();
JTextField widget = new JTextField(50);
final JPopupMenu popup = new JPopupMenu();
JMenuItem pasteMenuItem = new JMenuItem(widget.getActionMap().get(DefaultEditorKit.pasteAction));
pasteMenuItem.setText("Paste");
popup.add(pasteMenuItem);

widget.setComponentPopupMenu(popup);
frame.add(widget);
frame.pack();
frame.setVisible(true);
}
}

最佳答案

注意到 DefaultEditorKit.pasteActionAction名称“paste-from-clipboard”可能会有所帮助。直接设置菜单项的 Action 可能会更容易:

JMenuItem pasteMenuItem = new JMenuItem(new DefaultEditorKit.PasteAction());

关于java - 粘贴菜单项,附加到 JTextField 时不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24653158/

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