gpt4 book ai didi

Java - 如何在粘贴操作上设置启用()?

转载 作者:行者123 更新时间:2023-11-29 08:59:49 31 4
gpt4 key购买 nike

我正在用 Java 编写自己的记事本。基本部分差不多完成了。但是我对 JMenuItem 有很大的问题,它将单词粘贴到 JTextPane。它有效(粘贴),但我希望 JMenuItem 使用react:

  • 什么时候内存中有东西(从任何地方复制)=> JMenuItem 将是 setEnabled(true)
  • 当内存中没有内容时 > JMenuItem 将是 setEnabled(false)

    private static JMenuItem editPaste; // atribut
    editPaste = new JMenuItem(new DefaultEditorKit.PasteAction()); //in private method

我不知道,对于这个 Action 我应该听什么(听什么??)。我在任何地方都没有看到(http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html)。

最佳答案

感谢您的建议和关键字。我赢了,部分 :)

对于我的案例有效:

// atributes
private static JMenuItem editPaste;
private static Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// private method
clipboard.addFlavorListener(new ListenerPaste());
editPaste = new JMenuItem(new DefaultEditorKit.PasteAction());
editPaste.setEnabled(false);
// listener
private static class ListenerPaste implements FlavorListener {
public void flavorsChanged(FlavorEvent e) {
checkPaste();
}
}
// private method
private static void checkPaste() {
try {
if(clipboard.getData(DataFlavor.stringFlavor) != null) {
editPaste.setEnabled(true);
// JOptionPane.showMessageDialog(null, (String) clipboard.getData(DataFlavor.stringFlavor));
}
} catch (UnsupportedFlavorException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
// in constructor we check it also
checkPaste();

我不知道这是否是最合适的解决方案,但对我来说它有效。评论的那一行 - 实时它不能很好地工作 - 更多:listen to clipboard changes, check ownership?下一个来源: http://www.avajava.com/tutorials/lessons/how-do-i-get-a-string-from-the-clipboard.html

关于Java - 如何在粘贴操作上设置启用()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18146898/

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