Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Soul_Eater en 30 Mayo 2017, 05:33 am



Título: Como ejecutar una accion solo mientras se mantenga un boton presionado
Publicado por: Soul_Eater en 30 Mayo 2017, 05:33 am
Buenas,necesito saber como ejecutar una accion solamente mientras el usuario mantenga el boton presionado y cuando lo suelte vuelva a su estado inicial,por ejemplo,mantengo presionado la tecla enter y un boton del frame cambia de color,pero cuando suelto el boton vuelve al color que tenia antes,la parte de los eventos del teclado me lo se ,igual q lo de e.VK_enter==e.getkeycode()  blablablabla,pero eso q les digo no me entra ninguna idea a la cabeza de como hacerlo,si pudieran resolverme ese problema se los agradeceria.


Título: Re: Como ejecutar una accion solo mientras se mantenga un boton presionado
Publicado por: 3n31ch en 30 Mayo 2017, 10:43 am
Una forma de hacerlo seria la siguiente:
Código
  1. package test1;
  2.  
  3. import java.awt.event.KeyEvent;
  4. import java.awt.event.KeyListener;
  5. import javax.swing.JFrame;
  6.  
  7. public class MyFrame extends JFrame implements KeyListener {
  8.  
  9.    public MyFrame() {
  10.        super("elhacker.net");
  11.        this.setSize(100, 100);
  12.        this.addKeyListener(this);
  13.        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14.    }
  15.  
  16.    @Override
  17.    public void keyTyped(KeyEvent que) { }
  18.    @Override
  19.    public void keyPressed(KeyEvent que) {
  20.        System.out.println("Press");
  21.    }
  22.    @Override
  23.    public void keyReleased(KeyEvent que) { }
  24.  
  25.    public static void main(String[] args) {
  26.        MyFrame frame = new MyFrame();
  27.        frame.setVisible(true);
  28.    }
  29.  
  30. }
  31.  

Utilizo KeyListener en donde mientras se detecte la presión de una tecla (en este caso cualquier tecla) se imprimirá el mensaje "Press".

Ahora ten en cuenta que esto sucederá por cada "tic" de presión. Si lo que quieres es que se ejecute un proceso continuo tendrás que iniciar un thread en keyPressed y pausarlo en keyReleased.

Suerte con tu código!