- PR -

Enterキーの入力チェック方法なんですが・・・

投稿者投稿内容
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-07-29 12:07
unibon です。こんにちわ。

引用:

unibonさんの書き込み (2004-07-28 14:43) より:
ファイルまわりだとそうかもしれませんが、テキストボックスなど GUI 上のコントロールならば 'n' で良かったのではと思います。
以上、確かめずに書いています。ややこしくて良く覚えていません。


あまり本筋と関係ないのですが、その後試したことをメモ書きしておきます。
Windows 上の TextArea だと、改行は常に "\r\n" になるようです。
一方、Swing の JTextArea だと改行は "\n" が標準のようです。しかし append メソッドなどで "\r\n" を入れると、内部ではその情報が維持される("\r\n" が "\n" に変換されることはない)ため、細かいことまで考えると getText した場合は "\n" と "\r\n" が混在して取得してしまうことがあります。
Swing であろうとなかろうと、改行を取り除くだけなら "\r" も "\n" も一律に "" に変換してしまえば良いのでしょうが、もし Swing で、たとえば1行ごとに文字列を切り分けたいような場合は、"\n" の手前に "\r" が付いているかもしれないことを考慮しないと厳密ではないかもしれません。
たとえば、BufferedReader クラスの readLine メソッドの内部でやってるような処理が必要かもしれませんし、逆に言えば
コード:
JTextArea textArea;
BufferedReader reader = new BufferedReader(new StringReader(textArea.getText()));
String line = reader.readLine();

みたいなことをすれば、面倒な改行コードの処理を BufferedReader に押し付けてしまえて良いかもしれません。
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2004-07-29 14:25
アプローチが全く違いますが
コード:
class JTextAreaEx extends JTextArea {

protected void processKeyEvent(KeyEvent e){
if ( e.getKeyChar() == KeyEvent.VK_ENTER ) return;
super.processKeyEvent(e);
}
}


てな感じのサブクラスを作成してこれを使えば解決するんじゃないでしょうか?

確か別途ライブラリ使っているそうですので親クラスの部分を
使っているライブラリクラスにすれば使えると思うのですがどうでしょうか?

[ メッセージ編集済み 編集者: いっきゅう 編集日時 2004-07-29 14:27 ]

[ メッセージ編集済み 編集者: いっきゅう 編集日時 2004-07-29 14:35 ]
taka
会議室デビュー日: 2004/03/24
投稿数: 13
投稿日時: 2004-07-30 09:13
NAOさん、unibonさん、いっきゅうさんありがとうございます!
大変参考になりました。\rと\nを""にStringTokenizerで変換する
ことで解決しました。
細かい調査やいろいろなアプローチからご提案いただき、後学に
活かさせていただきます。
これからもよろしくお願いします。

スキルアップ/キャリアアップ(JOB@IT)