java Swing如何使用文档事件

时间:2014-02-26 23:34:15

标签: java swing events key-events documentlistener

我想要将DocumentEvent捕获到DocumentListener的insertUpdate方法中 我没有看到任何阻止作为KeyEvent(e.consume())的方法。

我不想使用密钥监听器,因为无法阻止剪贴板事件(复制粘贴)。 我如何处理这些事件? 自cose以来我如何提出文件事件?

    Isbn13TextField.getDocument().addDocumentListener(new DocumentListener(){
        public void insertUpdate(DocumentEvent e) {
            e.consume();   //Not Exists, How consume a copy paste?
        }
        public void removeUpdate(DocumentEvent e) {}
        public void changedUpdate(DocumentEvent e) {}   
    });

2 个答案:

答案 0 :(得分:1)

取决于你想要实现的目标......

你可以......

使用DocumentFilter,您可以在输入到达基础Document之前对其进行过滤。这由Document本身使用,因此不依赖于如何从Document添加/删除内容,而是Document本身。

特别关注Text Component FeaturesImplementing a Document Filter以及here示例

你可以......

使该字段不可编辑...

Isbn13TextField.setEditable(false)

答案 1 :(得分:1)

  

如何使用复制粘贴?

你做不到。在文档已经更新之后生成DocumentEvent。

如果您只想禁用文本字段的复制/粘贴功能,则可以删除密钥绑定:

KeyStroke copy = KeyStroke.getKeyStroke("control C");
textField.getInputMap().put(copy, "none");