Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

swingのテキストフィールドについて

はじめまして。。

ちょっとご教授願いたく、参上です。

swingのテキストフィールドで
文字数制限をかけたいのですが
(10文字まで入力可能な感じです)
どこか参考になるサイトを知ってますでしょうか?

色々調べると、メソッドかクラスを用意して
作られてるのを多く見かけます。
ただ、どれもちょっとわかりにくくて。

知っていたらよろしくお願いいたします。

25

回答

8220

閲覧

25件の回答

評価

0

ある処理について、常にわかりやすい方法が存在するとは限りません。
それしか見かけないのであれば、それよりわかりやすい方法はないということでしょう。
(多くの人がわざわざわかりにくい方法を使う必要はないのだから)

評価

0

メソッドかクラスを作成するしか方法は無いと思います。
それがわかりにくいと言うなら解決策は無いでしょう。

JBuilderとかで作ればGUIエディタで設定できそうだけど(持ってないから詳細不明)
それはswingでの解決ではないですね。

評価

0

メソッドかクラスを用意するしかないのですか。そうですか。。

色々と見たのですが、10文字以上入力されたらダイアログを出力するものばかりでした。

HTMLのmaxlength指定みたいなものは無いのですかね。
10文字以上入力されたらダイアログ(エラー)表示ではなく、10文字以上は入力ができないようにしたかったんです。

一緒に仕事をしている人が「簡単にできるよ」って言った手前、周囲もそうなんだーっていう感じなんです。javascriptなら作ったことがあるんですが、勝手が違いますよね。

がんばります。。

評価

30

swingであればJTextFieldのサブクラスJFormattedTextFieldがMaskFormatterとの組み合わせでうまく使えると思います。

MaskFormatter mf = null;
try {
    mf = new MaskFormatter("**********");
} catch (ParseException e) {
    e.printStackTrace();
}
JFormattedTextField jfTextField = new JFormattedTextField(mf);
こんな感じで10文字までの任意の文字しか入りません。
MaskFormatterを工夫すれば色々便利ですよ。

評価

0

tamaさんへ

ありがとうございます。

>JFormattedTextFieldがMaskFormatterとの組み合わせで>うまく使えると思います。

とあったので、私なりに色々と試してみましたがダメでした。APIを見ても、説明が理解できません。

>mf = new MaskFormatter("**********");

の"**********"の箇所はこのままでいいのでしょうか?それともこちらで何か指定する必要はあるのでしょか。

だんだんとお手上げになってきました。
何卒、よろしくお願いいたします。

評価

0

クラスの説明のところくらい読め

評価

0

名前のない方へ

説明は読んでますよ。
読んでるのですが、理解ができないんです。

きつい言い方をされますが、理解できない
気持ちわかりますか?
あなたは初めてのときから説明を理解できて
全てができたのですか?

評価

0

以下APIリファレンスから引用

# 任意の有効な数字。Character.isDigit を使用する 
' エスケープ文字。特殊フォーマット文字をエスケープする 
U 任意の文字 (Character.isLetter)。すべての小文字は大文字にマッピングされる 
L 任意の文字 (Character.isLetter)。すべての大文字は小文字にマッピングされる 
A 任意の文字または数字 (Character.isLetter または Character.isDigit) 
? 任意の文字 (Character.isLetter) 
* すべての文字および数字 

これで分からなかったら、日本語からやり直せ。

評価

0

ちなみに、MaskFormatterなんて便利なものは今回はじめて知りました。
tamaさんありがとう。

評価

0

理解出来ないと思い込むからだめなんだよ多分。上の部分は目に入らなかったの?
それとも、別のところを読んでた?

評価

0

名前なしさん

ものすごい上から目線ですよね。

もしかして、自分より物知りな人には丁寧だけど、
格下と判断した人には罵倒する人なんですか?

だとしたら、人としてやり直してください。

評価

0

名前無しさん。

これでも、クラスの説明読んだり、色々と試してみたり、正直、パニックです。
こんな状態では、理解するのも難しいと思いますよ。

私なりには精一杯なんです。

評価

0

じゃぁ一晩、頭を冷やしたほうがいいね。
ものすごい上から目線に感じられたのなら申し訳ありません。
でも、書いてあるのに理解しようとしないような人に、あなたはどうやってものを教えろというんですか?

評価

0

swing初心者さん、仰るとおりですね。
読んでも理解できません。
そう言うと、「Javaの世界から出て行けよ」みたいなこと言われたりするんでしょうね。多分。
因みに、私はコボラーだったので、COBOLのマニュアルは説明は極めて分かりにくい日本語なのですが、「書き方」というのが具体的に載っていて、それを読めば何とかなりました。
Javaのドキュメントは(classが多すぎて無理なのでしょうが)、この「書き方」が少なくて、且つ読んでも分かりません。もしくは分かりにくいです。
具体例の多さと分かりやすさでいうと、c#の方が上かもしれませんね。

評価

0

名前無しさん。

頭を冷やす時間がないんですよ。
それと、書いてあるのに理解しようとしないんではなく、理解ができないんです。

何時間説明文とにらめっこしてると思ってるんですか。あいかわらず、上から目線ですね。

評価

0

じゃぁもっと上の引用をさらに絞って引用しますね。

* すべての文字および数字 

評価

0

書いてあるんだから読めと言った
読んだけど理解出来ないと言われた
ずばり説明が書いてあるところを引用した
さすがにこれで駄目なら日本語が読めないのだと思った
駄目だった
逆に人として駄目だと言われた
頭を冷やせといった
冷やす時間はないらしい
書いてあるのに理解しようとしないんじゃなくて、書いてあるのに理解出来ないらしい
同じことだと思った(どっちにしても教えられない)
めげずに引用部分をもっと絞った

評価

0

ぼくは人ができていないと、改めて思った

評価

0

アスタリスク?に関してはわかってます。
その書き方をされると馬鹿にしているようにしか感じません。
上から目線ですよね。

アスタリスクで躓いているわけではないので。
ソース作成は、経験が物をいうと思ってます。経験した分、
知識も増えるからです。

勉強も研修もあまりしたことない私がいきなりできると思いますか?
それと、ずーっとperlをやってきた人間です。

変数の宣言の仕方から、記述の仕方から違うんですよ。

人は、自意識過剰であったり、頭の回転が速い人っていうのは
結構、人の気持ちがわからなかったりします。

それが時として、良いときもありますが、たいていは人を
傷つけます。ワンマンで仕事をしていくならそれでいいでしょう。
ただし、社会はワンマンではないと思います。

評価

0

やっとできました。

ただ、これでOKもらえるかはわかりませんが。

3時間強かかりました。

表示とロジックとソースを分けていたので
頭の中が混乱したみたいです。

お騒がせしました。
ありがとうございました。

評価

0

>3時間強かかりました。
それくらいなら短いほうですよ…。

プログラミングは経験がものを言う。それはそのとおりですが、柔軟に調査するという部分も重要です。
例えば実際にそれを使っているソースをネットで検索して、当たってみるとか。
これだけいろんな情報がネット上にあるのだから、使わない手はありません。

COBOLでもperlでも、長年やっているのであればその経験はJavaでも必ず役に立つはずです。
見方を変えてみれば、JavaだろうとCOBOLだろうとFORTLANだろうとBASICだろうと、同じものが見えるはずです。
変数の宣言など、実質的には些細なことです。


それと、頭を冷やす時間がないとのことですが、思い切って作業を打ち切って別のことを考えると、その後案外とあっさり糸口が見つかることもあります。
あまり自分を追い詰めないことです。

評価

0

の"**********"の箇所はこのままでいいのでしょうか?それともこちらで何か指定する必要はあるのでしょか。

これはなかったことになってるんですね。
おめでたい。

評価

0

というか、社会人はワンマンではないとはいうけど、他力本願過ぎるのも駄目だよ。

評価

0

なんか、へんな考えしてるみたいだからつっこんでみる。

理解できなければ調べる。
調べた事柄が理解できなければ、さらに細分化し調べるを繰り返すのが通常です。


すべての人が最初から理解していたわけではありません。

評価

0

いつの間にかこんな事に・・^^;
>ただ、これでOKもらえるかはわかりませんが。

JFormattedTextFieldは入力文字数を制限するだけが目的ではないので動作に違和感があるかも知れませんね。
NGの場合自作するしかなさそうです。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。