【问题标题】:where is text highlighted stored?突出显示的文本存储在哪里?
【发布时间】:2013-01-02 20:58:43
【问题描述】:

我需要制作一个复制突出显示的文本的应用程序。

我试过这个程序

String myString = "This text will be copied into clipboard when running this code!";
StringSelection stringSelection = new StringSelection (myString);
Clipboard clpbrd = Toolkit.getDefaultToolkit ().getSystemClipboard ();
clpbrd.setContents (stringSelection, null);

但这会复制剪贴板中已经存在的文本 在我们突出显示文本并点击复制选项后,它会从剪贴板打印文本

我想知道在我们简单地通过突出显示选择一个文本之后,它存储在哪里,我如何直接访问这个突出显示的文本而不通过操作系统的复制选项物理复制它

【问题讨论】:

  • 我将您的代码逐字复制到 Eclipse 中,运行后,剪贴板中包含您的字符串。这不正是你想要达到的吗?
  • 是的,它应该这样做,但我的问题是,我不想使用复制选项,我希望文本在突出显示文本后进入剪贴板
  • 所以捕获一个在选择文本时触发的事件。
  • 是的,我想知道,这是哪个事件,我试图找到但找不到
  • 没有通用的操作系统范围的机制来存储选定的文本,尤其是在 Swing 应用程序中,它甚至不使用这种高级本机 GUI 服务。操作系统将在 Swing 应用程序中选择的文本视为一些像素。

标签: java clipboard


【解决方案1】:

您可以使用CaretListener 收听选择更改。然后您可以使用#getSelectedText() 检索选定的文本。

这是一个简单的例子,TextArea

    final JTextArea textArea = new JTextArea();
    textArea.addCaretListener(new CaretListener() {
        @Override
        public void caretUpdate(CaretEvent e) {
            String selectedText = textArea.getSelectedText();
            // do something with it...
        }
    });

【讨论】:

  • OP 希望在选择文本的任何时间、任何地点都得到通知全局
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2023-03-21
  • 2011-08-31
相关资源
最近更新 更多