class AngleSlider implements ChangeListener {
        public void stateChanged(ChangeEvent e) {
        JSlider source = (JSlider) e.getSource();
        if (!source.getValueIsAdjusting()) {

            double dAngle = (double)source.getValue();
            pnlCannon.dCannonAngle=Math.toRadians(dAngle);
            pnlCannon.repaint();

        }
    }
}

Este es nuestro actual de escucha de eventos. Existe una oyente obligado a hacer lo que yo quiero?

InformationsquelleAutor user525479 | 2010-12-06

2 Comentarios

  1. 2

    No, usted sólo tendrá que quitar la getValueIsAdjusting() de verificación. Así, este va a repintar su cañón cuando se mueve el ratón:

    class AngleSlider implements ChangeListener {
        public void stateChanged(ChangeEvent e) {
            JSlider source = (JSlider) e.getSource();
    
            double dAngle = (double)source.getValue();
            pnlCannon.dCannonAngle=Math.toRadians(dAngle);
            pnlCannon.repaint();
        }
    }

    Este es otro ejemplo que muestra la misma, se imprimirá el valor del deslizador se mueve:

    public static void main(String[] args) {
    
        JFrame frame = new JFrame("Test");
    
        JSlider slider = new JSlider();
    
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent ce) {
                System.out.println(((JSlider) ce.getSource()).getValue());
            }
        });
    
        frame.add(slider);
    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
    • GRACIAS! Su primer código funcionó a la perfección! Nos sentimos como idiotas implementación if (!fuente.getValueIsAdjusting()) en el primer lugar!
  2. 0

    La !source.getValueIsAdjusting() es la prevención de la actualización de la forma de código en ejecución.

    ¿Por qué crees que la condición es necesaria?

Dejar respuesta

Please enter your comment!
Please enter your name here