0

JTextPaneSwingアプリケーションで使用しています。ここで、ファイルを開いてそのコンテンツを JtextPane に読み込むと、ドキュメント リスナーが呼び出されないという問題が発生します。

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'sを再作成できる Reader を使用します。すべてのコンテンツを remove() して古いコンテンツに戻すよりもDocument、新しいコンテンツを作成する方が高速です。Document読み取り前後のインスタンスを比較してみてください。

それらが異なる場合は、リスナー インスタンスが新しい Document インスタンスに追加されているかどうかを確認し、追加されていない場合は readd を実行します。

于 2013-04-17T05:51:50.413 に答える