Pregunta

En mi apllication estoy usando un JPanel en la que quiero añadir un detector de teclas. Lo hice. Pero doesnot trabajo.

¿Es porque estoy usando un SwingWorker para actualizar el contenido del panel de cada segundo.

Aquí está mi código para actualizar el panel

RenderedImage image = ImageIO.read(new ByteArrayInputStream((byte[]) get()));
        Graphics graphics = remote.rdpanel.getGraphics();
        if (graphics != null) {
            Image readyImage = new ImageIcon(UtilityFunctions.convertRenderedImage(image)).getImage();
            graphics.drawImage(readyImage, 0, 0, remote.rdpanel.getWidth(), remote.rdpanel.getHeight(), null);
        }
¿Fue útil?

Solución

¿El JPanel tiene el foco del teclado?

Le sugiero que use el InputMap y WHEN_IN_FOCUSED_WINDOW o algo similar. Extracto de cómo utilizar Key Bindings :

  

El WHEN_IN_FOCUSED_WINDOW entrada de mapas de todos los componentes habilitados en la ventana enfocada se buscan. Debido a que el orden de búsqueda de los componentes es impredecible

Esto ha funcionado muy robusta para mí. Echar un vistazo a mi otro post para obtener más información y ejemplos de código reales:

o este tutorial: de swing: Comprensión de entrada / Mapas de acción

pregunta relacionada:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top