0

JTextField でエスケープ文字を処理する簡単な方法があるかどうか疑問に思っていました。問題は、 getText() がエスケープ文字をエスケープすることです。もちろん、これはほとんどの場合に推奨される動作ですが、ユーザーが CSV ファイル (\t を含む) の区切り文字を自由に指定できるようにする場合はそうではありません。何か案は?

ボブ

4

3 に答える 3

1

Swing コンポーネント内のすべてのパブリック関数の動作をいつでもオーバーライドできます。それを「スペシャリゼーション」と呼んでいます。たとえば、独自のクラスを作成してメソッドMyJTextFieldをオーバーライドできます。getText()

于 2013-01-24T15:31:01.650 に答える
0

これはあなたにとって少し遅いかもしれませんが、その問題に対する簡単な解決策を見つけました:

JTextfield field = new JTextField();
/*someone puts a string into it*/
escapeFulString = field.getText().replace("\\t","\t");
System.out.println(escapeFulString);

これにより、その文字列がすべてのタブとともに出力されます。他のエスケープ シーケンスを追加するには、同じプロセスを実行します。Java 文字列メソッドはその場で編集しないことを忘れないでください。

text.replace("\\t","\t") 
//is not the same as
text = text.replace("\\t","\t");
于 2014-03-31T01:12:41.983 に答える
0

JTextField はビューにすぎないため、常にモデルが内部にあり、このモデルはDocumentクラスです。これを試すことができます:

    JTextField f = new JTextField();

    // your JTextField is being filled somehow with text ...

    Document document = f.getDocument();
    try {
        String text = document.getText(0, document.getLength());
    } catch (BadLocationException ex) {
    }

おそらく、インスタンスではなくインスタンスからテキストを収集するDocumentJTextField、エスケープされません。

于 2013-01-24T15:40:37.243 に答える