JSpinnerで数値以外の入力をブロックしたい人!それは私です。
数値だけを扱うJSpinnerは、モデルにSpinnerNumberModelを使います。最低値が1で増分1で最大が無限とか。これだと直接"abc"と入力されたときは、スピナーからフォーカスが移動したときに、モデルに照会して元の値(数値)に戻す動作をします。
これでは足りない場合の話です。そもそも入力されたくないんだけど、という話です。
---
JComponent editor = spinner2.getEditor();
for(Component c : editor.getComponents()){
//JFormattedTextFieldのインスタンスが1個だけあるということを知っています。
//それがこのコードの前提です。
c.addKeyListener(new KeyAdapter(){
@Override
public void keyTyped(KeyEvent e) {
if(!Character.isDigit(e.getKeyChar())) e.consume();
}
});
}
---
これで数値キーしか入力できません。
どう書いたらハックにならない(API以外のことに依存しない)のか、モヤモヤします。
追加:
文字列をペーストした場合については、ここではサポートしていません。
これで数値キーしか入力できません。
どう書いたらハックにならない(API以外のことに依存しない)のか、モヤモヤします。
追加:
文字列をペーストした場合については、ここではサポートしていません。
0 件のコメント:
コメントを投稿