0

数字 (0 ~ 9) のみを使用して、4 つの JTextField に検証を追加しようとしています。1 つの JTextField のコードは次のとおりです。

txtf_xCoord.addKeyListener(new KeyAdapter()
    {
        @Override
        public void keyTyped(KeyEvent keyEvent)
        {
            if (txtf_xCoord.getText().length() < 3 && keyEvent.getKeyChar() >= '0' && keyEvent.getKeyChar() <= '9')
            {
                // Optional
                super.keyTyped(keyEvent);
            }
            else
            {
                // Discard the event
                keyEvent.consume();
            }
        }
    });

それぞれのコードをコピーして貼り付けずに、残りの JTextFields にこの検証を追加するより効率的な方法はありますか?

4

3 に答える 3

3

InputVerifierを使用できます。次のコードを見てください:

public class NumericVerifier extends InputVerifier {
        @Override   
    public boolean verify(JComponent input) {
            //Check type of the control
                String text = "";

if(input instanceof JTextField) {   
                JTextField tf = (JTextField) input; 
                text = tf.getText().trim(); 
            }

        boolean matches = text.matches("^\\d+$");
        input.setBackground( ( matches ) ? Color.WHITE :  Color.RED);
        return matches; 
    }   
}
于 2012-03-07T13:18:11.753 に答える
2
于 2012-03-07T13:22:57.423 に答える
1

匿名クラスを実際のクラスに変換し、そのクラスをどこでもインスタンス化できます。さて、あなたも見ることができますJFormattedTextField

于 2012-03-07T13:19:33.290 に答える