Java KeyListener does not shoot at JSpinner

tried several different approaches to this, but have not yet succeeded. Just wondered if I was missing anything. I have a JSpinner that is a component of a DateSelector widget along with a Calendar. I am trying to run a validation method if the user changes any text in JSpinner instead of using the Calendar or JSpinner control up and down.

Here are some approaches I've tried:

jSpinner1.addKeyListener(kl);

jSpinner1.getEditor().addKeyListener(kl);

((JSpinner.DefaultEditor) jSpinner1.getEditor().getTextField().addKeyListener(kl);

Anyone have any ideas on what I'm doing wrong? Thanks

UPDATE Sorry, I had to say that I already added a ChangeListener to the JSpinnerDateModel that is attached to the JSpinner. For instance:

ChangeListener changeListener = new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent e) {
            dateChanged();
        }
    };

    jSpinnerDateModel.addChangeListener(changeListener);

    KeyListener keyListener = new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println(e.getKeyChar());
            dateChanged();
        }

        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub

        }

    };
    ((JSpinner.DefaultEditor) jSpinner1.getEditor()).getTextField().addKeyListener(
            keyListener);

thank

Franc

+5
3

JSpinners KeyEvents, ChangeEvents . ChangeListener , .

. : Spinner ( Java)

+2

, :

JFormattedTextField tf = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField();
tf.setEditable(false);

. :

((JSpinner.DefaultEditor)spinner.getEditor()).getTextField().addKeyListener(new KeyListener(){

            @Override
            public void keyPressed(KeyEvent e) {                    
            }

            @Override
            public void keyReleased(KeyEvent e) {
                System.out.println("PRESSED!");                    
            }

            @Override
            public void keyTyped(KeyEvent e) {                    
            }

        });
+11

, , , JSpinner JComboBox :

JComboBox.getEditor().getEditorComponent()

J1.7, ,

JSpinner.getEditor().getComponent(0)

"" :

JSpinner.getEditor().getComponent(0).addKeyListener(...)

, " " J1.7, , .

Enjoy.

EDIT

or if the editor is an instance of DefaultEditor, you can use it as such and use 'getTextField ()'. It would be convenient if this were defined in the interface.

+2
source

All Articles