0

JTextPane在 Swing 应用程序中使用。在这里我遇到问题,当我打开文件并将其内容读取到 JtextPane 时,它​​不会调用 Document Listener。

Listener我应该在 JTextPane 中添加哪个来读取文件?

File file=new JFileChooser().getSelectedFile();
input = new BufferedReader(
        new InputStreamReader(
        new FileInputStream(
        file)));
jTextPane1.read(input, "READING FILE :-)");

这是DocumentListener

jTextPane1.getDocument().addDocumentListener(new DocumentListener() {

        public String getText() {
            int caretPosition = jTextPane1.getDocument().getLength();
            Element root = jTextPane1.getDocument().getDefaultRootElement();
            String text = "1" + System.getProperty("line.separator");
            for (int i = 2; i < root.getElementIndex(caretPosition) + 2; i++) {
                text += i + System.getProperty("line.separator");
            }
            return text;
        }

        public void insertUpdate(DocumentEvent e) {
            jTextArea1.setText(getText());
        }

        public void removeUpdate(DocumentEvent e) {
            jTextArea1.setText(getText());
        }

        public void changedUpdate(DocumentEvent e) {
            jTextArea1.setText(getText());
        }
    });
4

1 回答 1

2

read() 方法使用EditorKit'sReader 反过来可以重新创建Document实例。创建新Document内容而不是 remove() 所有内容并将其添加回旧内容更快。尝试比较阅读前后的实例。

如果它们不同,请检查侦听器实例是否已添加到新的 Document 实例中,如果未附加则 readd。

于 2013-04-17T05:51:50.413 回答