ブラウザでダウンロード addKeyListener と setInputVerifieraddKeyListener でキーイベントを3種類処理可能ですが、 3つとも consume() する事によってキー入力がキャンセルされます。 ユーザーコントロール内に実装すれば、もっとすっきりするとは思いますが、 他のキーコントロールの都合を考えると、外側に全て書いてしまうほうが良いと思います。 また、フォーカスが移動するタイミングでチェックする InputVerifier もあるので、 やはり、フィールド単位で書き込むほうが良いと思います。 あるいは、一つのフィールドに対して外部パッケージに一つのクラスを作成して、 管理しても良いかもしれません。 01. //************************************************* 02. // 入力制限用クラス 03. //************************************************* 04. class num1Verifier extends InputVerifier { 05. public boolean verify( JComponent target ) { 06. JTextField check = (JTextField)target; 07. 08. String str = check.getText(); 09. if ( str.equals( "1" ) ) { 10. return true ; 11. } 12. 13. return false ; 14. } 15. } 16. 17. //************************************************* 18. // テキストフィールド 19. //************************************************* 20. private boolean chk_TextField = true ; 21. private JTextField getJTextField() { 22. if (jTextField == null ) { 23. jTextField = new JTextField(); 24. jTextField.setBounds( new Rectangle( 125 , 26 , 71 , 27 )); 25. //************************************************* 26. // フォーカス移動時の入力制限 27. //************************************************* 28. jTextField.setInputVerifier( new num1Verifier()); 29. //************************************************* 30. // キー入力制限 31. //************************************************* 32. jTextField.addKeyListener( new java.awt.event.KeyAdapter() { 33. public void keyPressed(java.awt.event.KeyEvent e) { 34. Main. this .chk_TextField = chkTextField( e.getKeyCode() ); 35. if ( !Main. this .chk_TextField ) { 36. e.consume(); 37. } 38. } 39. }); 40. jTextField.addKeyListener( new java.awt.event.KeyAdapter() { 41. public void keyReleased(java.awt.event.KeyEvent e) { 42. if ( !Main. this .chk_TextField ) { 43. e.consume(); 44. } 45. } 46. }); 47. jTextField.addKeyListener( new java.awt.event.KeyAdapter() { 48. public void keyTyped(java.awt.event.KeyEvent e) { 49. if ( !Main. this .chk_TextField ) { 50. e.consume(); 51. } 52. } 53. }); 54. 55. } 56. return jTextField; 57. } 58. //************************************************* 59. // キー入力制限 60. //************************************************* 61. private boolean chkTextField( int keyCode ) { 62. // System.out.println( keyCode ); 63. // BS・LEFT・RIGHT 64. if ( keyCode == 8 || keyCode == 0x25 || keyCode == 0x27 ) { 65. return true ; 66. } 67. // 入力データ量の制限 68. if ( jTextField.getText().length() == 1 ) { 69. return false ; 70. } 71. // テンキー 72. if ( 96 <= keyCode && keyCode <= 105 ) { 73. return true ; 74. } 75. // 0~9 76. if ( 48 <= keyCode && keyCode <= 57 ) { 77. return true ; 78. } 79. return false ; 80. } |