Tengo un jbutton que realiza una función cuando se hace clic con el ratón. Para hacer esto de manera programática tengo esta otra función

void clickButton(){
      backButton.doClick();
}

Cuando ejecuto el clickButton() función que puedo ver el boton atrás siendo presionado en el jFrame, pero la función asociada con backButton no sucede. Cuando hago clic en él con el ratón funciona. ¿qué estoy haciendo mal aquí?

  • ¿Por qué usted volver a colocar esta pregunta sin código de demostración que muestra el problema? Yo dije en su última publicación que no hay nada especial acerca del uso de la doClick() método, por lo que debe tener un problema con el código. La publicación de una línea de código es inútil para nosotros para resolver tu problema. Publicar un SSCCE. Si usted no sabe lo que es un SSCCE es, a continuación, utilizar Google para buscar en la web.
  • usted debe publicar más información acerca de su problema. publicar el código en el que se asigna a la acción (lo que usted dijo no funciona a veces) para el botón.
  • Creo que addActionListener no acaba de funcionar bien, pero addItemListener hace, por alguna razón.
InformationsquelleAutor kokokok | 2009-08-30

3 Comentarios

  1. 5

    Si usted tiene un ActionListener conectado a su button que va de fuego cuando se llama al método .doClick();

    Una prueba de ejemplo para demostrarlo:

    public class Test implements ActionListener {
        public Test() {
        }
    
        public void actionPerformed(ActionEvent e) {
            System.out.println("The action have been performed");
        }
    
        public static void main(String[] agrs) {
            JButton but = new JButton();
            but.addActionListener(new Test());
            but.doClick();
        }
    }
  2. 2

    Se puede iterar sobre los oyentes para que el botón y llamar a ellos manualmente.

        KeyEventDispatcher keyEventDispatcher = new KeyEventDispatcher() {
              @Override
              public boolean dispatchKeyEvent(final KeyEvent e) {
                if (e.getID() == KeyEvent.KEY_TYPED) {
                  System.out.println(e);
                  if (e.getKeyChar() == ' '){
                      MouseEvent me = new MouseEvent(btnStop,MouseEvent.MOUSE_CLICKED,EventQueue.getMostRecentEventTime(),0,0,1,1,false);
                      for (MouseListener ml : btnStop.getMouseListeners()) ml.mouseClicked(me);
                  }
                }
                //Pass the KeyEvent to the next KeyEventDispatcher in the chain
                return false;
              }
            };
        KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keyEventDispatcher);
    }
  3. 0

    ¿Cómo estás adjuntando la lógica para el botón? Si usted está usando un ActionListener (o Acción) debe disparar. Si usted está usando algo más (tal vez MouseListener?), Yo no creo que vaya.

Dejar respuesta

Please enter your comment!
Please enter your name here