public void setAxisValue( JoystickAxis axis, float value ) {
                
            System.out.println( "Axis:" + axis.getName() + "(id:" + axis.getLogicalId() + ")=" + value );
            if( axis == axis.getJoystick().getXAxis() ) {
                setXAxis(value);
            } else if( axis == axis.getJoystick().getYAxis() ) {
                setYAxis(-value);
            } else if( axis == axis.getJoystick().getAxis(JoystickAxis.Z_AXIS) ) {
                // Note: in the above condition, we could check the axis name, but
                //       I have at least one joystick that reports 2 "Z Axis" axes.
                //       In this particular case, the first one is the right one so
                //       a name based lookup will find the proper one.  It's a problem
                //       because the erroneous axis sends a constant stream of values.
                setZAxis(value);
            } else if( axis == axis.getJoystick().getAxis(JoystickAxis.Z_ROTATION) ) {
                setZRotation(-value);
            } else if( axis == axis.getJoystick().getAxis(JoystickAxis.LEFT_TRIGGER) ) {
                if( axis.getJoystick().getButton(JoystickButton.BUTTON_6) == null ) {
                    // left/right triggers sometimes only show up as axes
                    boolean pressed = value != 0;
                    if( pressed != buttons.get(JoystickButton.BUTTON_6).isDown() ) {
                        setButtonValue(JoystickButton.BUTTON_6, pressed);
                    }
                }
            } else if( axis == axis.getJoystick().getAxis(JoystickAxis.RIGHT_TRIGGER) ) {
                if( axis.getJoystick().getButton(JoystickButton.BUTTON_7) == null ) {
                    // left/right triggers sometimes only show up as axes
                    boolean pressed = value != 0;
                    if( pressed != buttons.get(JoystickButton.BUTTON_7).isDown() ) {
                        setButtonValue(JoystickButton.BUTTON_7, pressed);
                    }
                }
            } else if( axis == axis.getJoystick().getPovXAxis() ) {
                if( lastPovX < 0 ) {
                    setButtonValue( "POV -X", false );    
                } else if( lastPovX > 0 ) {
                    setButtonValue( "POV +X", false );    
                } 
                if( value < 0 ) {
                    setButtonValue( "POV -X", true );    
                } else if( value > 0 ) {
                    setButtonValue( "POV +X", true );    
                }
                lastPovX = value; 
            } else if( axis == axis.getJoystick().getPovYAxis() ) {
                if( lastPovY < 0 ) {
                    setButtonValue( "POV -Y", false );    
                } else if( lastPovY > 0 ) {
                    setButtonValue( "POV +Y", false );    
                } 
                if( value < 0 ) {
                    setButtonValue( "POV -Y", true );    
                } else if( value > 0 ) {
                    setButtonValue( "POV +Y", true );    
                }
                lastPovY = value; 
            }
        }
Easier to watch for all button and axis events with a raw input listener.
jme3-examples/src/main/java/jme3test/input/TestJoystick.java