ブラウザでダウンロード addKeyListener と setInputVerifieraddKeyListener でキーイベントを3種類処理可能ですが、 3つとも consume() する事によってキー入力がキャンセルされます。 ユーザーコントロール内に実装すれば、もっとすっきりするとは思いますが、 他のキーコントロールの都合を考えると、外側に全て書いてしまうほうが良いと思います。 また、フォーカスが移動するタイミングでチェックする InputVerifier もあるので、 やはり、フィールド単位で書き込むほうが良いと思います。 あるいは、一つのフィールドに対して外部パッケージに一つのクラスを作成して、 管理しても良いかもしれません。 //************************************************* // 入力制限用クラス //************************************************* class num1Verifier extends InputVerifier { public boolean verify( JComponent target ) { JTextField check = (JTextField)target; String str = check.getText(); if ( str.equals("1") ) { return true; } return false; } } //************************************************* // テキストフィールド //************************************************* private boolean chk_TextField = true; private JTextField getJTextField() { if (jTextField == null) { jTextField = new JTextField(); jTextField.setBounds(new Rectangle(125, 26, 71, 27)); //************************************************* // フォーカス移動時の入力制限 //************************************************* jTextField.setInputVerifier(new num1Verifier()); //************************************************* // キー入力制限 //************************************************* jTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent e) { Main.this.chk_TextField = chkTextField( e.getKeyCode() ); if ( !Main.this.chk_TextField ) { e.consume(); } } }); jTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent e) { if ( !Main.this.chk_TextField ) { e.consume(); } } }); jTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent e) { if ( !Main.this.chk_TextField ) { e.consume(); } } }); } return jTextField; } //************************************************* // キー入力制限 //************************************************* private boolean chkTextField( int keyCode ) { // System.out.println( keyCode ); // BS・LEFT・RIGHT if ( keyCode == 8 || keyCode == 0x25 || keyCode == 0x27 ) { return true; } // 入力データ量の制限 if ( jTextField.getText().length() == 1 ) { return false; } // テンキー if ( 96 <= keyCode && keyCode <= 105 ) { return true; } // 0〜9 if ( 48 <= keyCode && keyCode <= 57 ) { return true; } return false; } |