4

ファイルから読み取ることJTextPaneでデータが入力され、その後データが解析およびフォーマットされます。ユーザーはを編集することはできませんがJTextPane、表示されたカーソルでユーザーがナビゲートできるようにしたいと思います。

を使用すると、カーソルは非表示になりますが、 Shiftキーを押しながら矢印キーを使用してテキストのブロックを選択することにより、setEditable(false)非表示のカーソルの位置を間接的に観察できます。

編集を禁止しながら表示カーソルを有効にするために、、、、およびメソッドに対して何もしないsetEditable(false)ダミーを作成しました。ただし、プログラムでファイルからを入力するには、通常のフィルターに交換する必要があります。次に、ユーザーに制御を戻す直前にダミーフィルターを元に戻します。DocumentFilterinsertString()remove()replace()JTextPane

これまでのところこれはうまくいくようですが、もっと簡単な解決策はありますか?これをそのままにしておくと、技術的に編集可能であるため、ユーザーがテキストペインを編集できるようになるキーストロークまたはマウスアクティビティのシーケンスはありますsetEditableか?

4

4 に答える 4

6
textPane.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            textPane.setEditable(true);

        }

        @Override
        public void focusGained(FocusEvent e) {
            textPane.setEditable(false);

        }
    });

さらに別の汚いハック!それはあなたが必要とするものを提供するようです!

于 2012-10-03T02:00:49.753 に答える
5

DocumentFilter導入フラグisAPIを拡張します。falseの場合は、すべての変更を防止してください。プログラムでコンテンツを追加する必要がある場合は、フラグを設定し、コンテンツを追加して、フラグをfalseにリセットします。

于 2012-10-03T05:57:05.650 に答える
3

これは私にとってトリックでした(前の提案の組み合わせ):

textPane.addFocusListener(new FocusListener() {

    @Override
    public void focusGained(FocusEvent e) {
         textPane.getCaret().setVisible(true);
    }
});
于 2014-09-05T12:31:14.330 に答える
2

これはおそらく汚い、汚いハックですが、私はこれを機能させました。

テキストペインを編集不可に設定した後、を使用textPane.getCaret().setVisible(true)してキャレットを再度有効にします

于 2012-10-03T01:47:21.853 に答える