java - Java JTextArea 中选择文本触发的哪个事件?

标签 java swing selection jtextarea

我想监视选中的文本进入一个JTextArea。我不知道文本选择触发的是什么事件。

我只想在从 JTextArea 中选择某些文本后立即启用某些菜单项,例如将选项复制和剪切到菜单中。我应该为此监控什么?

最佳答案

我不知道文本组件有任何“选择监听器”(尽管它们可能有用),但您可以使用 CaretListener 来监视插入符位置的变化并检查选择状态...

public class TestSelectionMonitor {

    public static void main(String[] args) {
        new TestSelectionMonitor();
    }

    public TestSelectionMonitor() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                final JTextArea ta = new JTextArea();
                ta.addCaretListener(new CaretListener() {
                    @Override
                    public void caretUpdate(CaretEvent e) {
                        int length = ta.getSelectionEnd() - ta.getSelectionStart();
                        System.out.println(length);
                    }
                });

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(ta));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

关于java - Java JTextArea 中选择文本触发的哪个事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147016/

相关文章:

java - 在 EXT 中添加自定义方法时出现问题

java - Selenium (java)findelements中的findelements

Java:从新的 JFrame 获取复选框名称

java - GroupLayout 对齐问题

java - JPanel 上没有出现或移动框..Java

c++ - 如何清除 wxListBox 中的所有选择(使用 wxLB_MULTIPLE)?

python - 如何使用 python-dbus 在桌面应用程序中获取选定的文本?

javascript - 在 contenteditable 中取消选择后范围文本相同

java - 有没有某种方法可以为嵌套在 Jackson 的可选类型中的类型指定自定义反序列化器?

java - 本地人工任务服务 jBPM