lunes, 16 de mayo de 2016

Programando una consola en Java con NetBeans 2/X

     Como vimos en el artículo anterior en el que hemos creado la base de una aplicación para trabajar con Java Swing y siguiendo con el proyecto para tener una consola completa que envíe comandos tanto por el puerto serie como por ethernet, ahora vamos a continuar con la parte de la consola.

    Siguiendo con el código generado en el artículo anterior vamos a agregarle un par de componentes de texto y un botón de envío.
    Abrimos el proyecto ConsolaControlArduino y pinchamos en Design.

     1º En el panel de la derecha pinchamos sobre Campo de texto y seguidamente pinchamos sobre el marco que tenemos en el centro. Esto hará que se cree una caja de texto donde, en tiempo de ejecución, escribiremos los comandos que le enviaremos a Arduino.

     2º Le vamos a cambiar un par de propiedades a este componente. Con él seleccionado, pinchamos en el panel derecho sobre Codigo y pinchamos en Nombre de variable y modificamos el nombre del objeto por uno más descriptivo. Por ejemplo: jTextFieldComandos.


Es buena práctica utilizar nombres descriptivos que podamos identificar rápidamente cuando tengamos más objetos, y más si son del mismo tipo. Tener nombres como jTextField1, jTextField2, jTextField3 no es buena idea.
Después pinchamos en Propiedades y la propiedad text la dejamos en blanco. Estiramos el componente en el marco para que ocupe casi todo el marco y ya tenemos el primer componente.

     3º De la misma forma que el anterior componente agregamos un Área de texto donde aparecerán los comandos que se le envían a Arduino. Le cambiamos el nombre por jTextAreaTransferencias y lo ajustamos al tamaño deseado.

     4º Y de la misma forma agregamos un Botón para enviar los comandos. Le cambiamos el nombre por jButtonEnviar. Y en la propiedad text escribimos Envidar comando.

     5º Ahora hacemos una pequeña programación para que al presionar el botón enviar la cadena de texto que se haya escrito en la caja jTextFieldComandos se borre de esa caja y pase a jTextAreaTransferencias. Primeramente pinchamos sobre el botón que ejecutará esa acción y nos vamos al panel derecho y pinchamos sobre Eventos. Y nos vamos hasta el evento mouseClicked y seleccionamos jButtonEnviarMouseClicked. Esto generará un pequeño código al que agreraremos las sentencias.

if (!"".equals(jTextComandos.getText()))  // Si la caja de texto no está vacía
            enviarComando(jTextComandos.getText()); // ejecuta la función



NetBeans crea la cabecera del método y las llaves y solo podemos escribir en medio:

private void jButtonEnviarMouseClicked(java.awt.event.MouseEvent evt) {                                         
        if (!"".equals(jTextComandos.getText()))
            enviarComando(jTextComandos.getText());
}


     6º Ahora escribimos la función enviarComando(String mensaje).

public void enviarComando(String mensaje){
        jTextComandos.setText("");     // Borra el comando de la caja de texto
        jTextAreaTransferencias.append(mensaje + "\n");  // Escribe el mensaje                                                             // en el TextArea
}


Aunque de momento lo único que hace es borrar el texto de un sitio y escribirlo en otro.

     7º También vamos a programar un evento para la caja de texto, que será qué cuando se pulse la tecla Enter, si hay algo en la caja, lo envíe. Más o menos como hace cualquier chat. Pinchamos sobre la caja de texto jTextFieldComandos y en el panel derecho pinchamos sobre Eventos nos vamos a keyPressed y seleccionamos jTextFieldKeyPressed que generará la cabecera de programación para el evento. En su interior escribimos el siguiente código:

private void jTextFieldComandosKeyPressed(java.awt.event.KeyEvent evt) {
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            if (!"".equals(jTextFieldComandos.getText()))
                enviarComando(jTextFieldComandos.getText());
        }
}


Marcará KeyEvent con error pero si le damos a la bombillita de la izquierda para que importe la librería correcta import java.awt.event.KeyEvent; o la escribimos nosotros el error desaparece.

    8º Solo queda ejecutarlo y ver como funciona.

    Sobre este código descrito (descargar) seguiremos para añadirle unas sencillas sentencias para que envíe los comandos por ethernet.

Artículos relacionados:
Entrada 123 - Como crear un proyecto con Swing en NetBeans 8.X
Entrada 120 - Proyecto Arduino ethernet SD + consola en Java 1/X
Entrada 117 - Configuración de la shield ethernet SD de Arduino

    @eltiopacote
Listado de artículos: http://www.pacovalverde.es/indice

No hay comentarios:

Publicar un comentario