java - 右键单击选择文本 JTextPane

标签 java swing

在我的 JTextPane 中,当我选择文本并单击鼠标右键时;它提供了复制文本的选项。下面是代码:

public LogPane() {
    super();
    JPopupMenu pop = new JPopupMenu();
    final LogPane l = this;
    JMenuItem copy = new JMenuItem("Copy      CTRL+C");
    copy.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selected = l.getSelectedText();
            if(selected==null)
                return;
            StringSelection clipString = new StringSelection(selected);
            clipbd.setContents(clipString,clipString);
        }

    }); 
    pop.add(copy);
    copy.setEnabled(true);
}

所以在右键单击时,它会提供复制文本的选项。但我想要的是,当没有选择文本并且用户右键单击时 - 不应显示复制选项。应该如何合并更改?

最佳答案

PopupMenuListener 应该可以解决问题。

public LogPane() {
    super();
    JPopupMenu pop = new JPopupMenu();
    final LogPane l = this;
    final JMenuItem copy = new JMenuItem("Copy      CTRL+C");
    copy.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selected = l.getSelectedText();
            if(selected==null)
                return;
            StringSelection clipString = new StringSelection(selected);
            clipbd.setContents(clipString,clipString);
        }

    }); 
    pop.add(copy);
    pop.addPopupMenuListener(new PopupMenuListener() {
        public void popupMenuCanceled(PopupMenuEvent e) {}
        public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
        public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
            copy.setEnabled(l.getSelectedText() != null);
        }
    });
}

关于java - 右键单击选择文本 JTextPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13474678/

相关文章:

java - JLabel 没有出现在 JButton 上?

java - 打开电子邮件客户端,并将 JFreeChart 的图表(图像)粘贴到正文中

java - 在 JPanel 中执行 ActionListener

java - 具有 AbstractTableModel 的 JTable 不会在单击时进行编辑

java - NULL 上的方法调用工作正常 - 期待 NPE

java - 在 mysql5.5 上通过 JDBC 创建触发器时出错

java - jodatime days 期间类型问题/错误

java - 如何在一页中打印多个 Jtable

java.lang.NoSuchMethodException : package. ClassName.<init>() 使用 Class<?>

Java/Android 正则表达式问题