Cambie fácilmente de VB a una plataforma de desarrollo basada en Swing
Cuando Abacus Research AG, una empresa de desarrollo de software comercial, decidió cambiar su plataforma de desarrollo de Delphi de Borland a Java Swing, se encontró en una encrucijada en el desarrollo de software. Nuestro amplio equipo de desarrollo de aplicaciones cuenta con muchos años de experiencia. experiencia con Delphi en desarrollo de GUI sin ninguna experiencia en Java/Swing y necesitábamos convertir una gran cantidad de aplicaciones de Delphi a Swing en un período de tiempo muy corto. Después de investigar las herramientas de GUI disponibles en ese momento, sentimos que deberíamos patrocinar una. Compilador de GUI de Java de código abierto GPL El compilador de GUI de Java AbaGUIBuilder está diseñado para pasar fácilmente del desarrollo de VB o Delphi a Java Swing. Esta estrategia ayuda a Abacus Research a lograr la entrega de sus aplicaciones en versión Java, acortando el tiempo de desarrollo y permitiendo a los desarrolladores centrarse en el negocio. aplicaciones en lugar de las complejidades del marco Swing Como se muestra en la figura, AbaGUIBuilder tiene elementos que se encuentran en muchos otros entornos de desarrollo como VB y Delphi. Se encuentra en la esquina superior izquierda del árbol de objetos activos, y debajo de él. es el área de selección del componente Swing. La parte media superior de la ventana es el panel de desarrollo, o lienzo. Coloque el componente Swing aquí y cree una instancia. La parte superior derecha es el editor de propiedades. dos controles La página de pestaña es el editor de código de evento para agregar código de evento para cada objeto visual individual y el panel de mensajes para mostrar el mensaje de estado de AbaGUIBuilder
Figura Por qué Abacus GUI Compiler. ¿Tenemos nuestra propia herramienta GUI? ¿Por qué elegimos escribir nuestra propia herramienta? Al principio decidimos que nuestra herramienta debería incluir los siguientes cinco requisitos: Fácil de usar. No se requiere experiencia en el uso de administradores de diseño. No es necesario generar código Swing para lograr la separación de la lógica empresarial. UI Evaluamos lo que estaba disponible en ese momento. Al desarrollar herramientas GUI, descubrí que todos los IDE buenos escriben código Swing a mano, lo que no cumple con nuestro primer y más crítico requisito. La facilidad de uso que definimos significa que cualquier desarrollador puede hacerlo. téngalo en unos minutos, independientemente de su experiencia con Java Swing. En lugar de desarrollar un formulario GUI ejecutable en unas pocas horas, los desarrolladores deben centrarse en la lógica empresarial en lugar de los detalles del marco. Entorno WYSIWYG para que puedan percibir realmente cuándo se está ejecutando la aplicación La situación cuando se lanzó el programa La implementación de esta función ahorró mucho tiempo a los desarrolladores, pero ninguna de las herramientas que evaluamos en ese momento pudo implementar esta función. La pantalla diseñada no era la misma que la pantalla de salida y el algoritmo de programación era deficiente para nosotros. Es simplemente un gran paso atrás. AbaGUIBuilder implementa esta función a través del modo de vista previa. Puede ver cómo se ejecuta durante el desarrollo. ¿Separación de la interfaz de usuario y la lógica empresarial? Debido a que las empresas tienen que lidiar con reglas en constante cambio, como cálculos de impuestos y nóminas, necesitamos la capacidad de mantener las reglas y fórmulas en un módulo de paquete separado mientras se mantiene la interfaz de usuario para que la aplicación JAR (UI) no sea necesaria cuando cambian las fórmulas. cambios para que solo sea necesario probar las fórmulas modificadas. Esto simplifica el proceso de lanzamiento. Para satisfacer esta necesidad, diseñamos el compilador GUI para ensamblar la aplicación y los eventos en un JAR de aplicación. El JAR oculta todo el código GUI Swing y lo pasa. una clase de renderizador (AdaRenderer) No se requiere experiencia en Swing para ejecutar la aplicación en tiempo de ejecución. Para garantizar que las herramientas de desarrollo puedan lograr un verdadero WYSIWYG, decidimos adoptar un método de gestión de diseño similar al posicionamiento de coordenadas XY en Delphi y VB. De esta manera, Swing JFrame es un lienzo que los desarrolladores pueden colocar en el diseño XY de JFrame. Con el administrador de diseño XY, nuestros desarrolladores no necesitan hacerlo.
Es necesario comprender los complejos administradores de diseño con los que Swing no está familiarizado para que nuestros desarrolladores de aplicaciones puedan centrarse en la interfaz de usuario de la aplicación y su lógica empresarial. De hecho, AbaGUIBuilder contiene la mayoría de los componentes visuales de Swing, desde paneles hasta páginas de pestañas, que también son compatibles. menús, elementos de menú, componentes compatibles con bases de datos con conexiones de bases de datos Java, componentes JFreeChart y la capacidad de importar bibliotecas de clases visuales de terceros. Todos estos componentes se pueden desarrollar arrastrando un marco vacío desde el área de selección de componentes. Proyecto de muestra: Seguimiento de la información de contacto del desarrollador La mejor manera de demostrar AbaGUIBuilder RAD (Desarrollo rápido de aplicaciones) es desarrollar una aplicación de muestra de un panel de pestañas de texto múltiple con una barra de menú. Primero debe pasar por Seleccionar JFrame en el área de selección de componentes. y arrástrelo al lienzo de la aplicación. Coloque el objeto JFrame en el panel de formulario vacío y luego coloque todos los componentes visuales en el JFrame. Tenga en cuenta que cuando inicie un nuevo proyecto, primero debe colocar el JFrame como su lienzo de objetos. en la imagen
Aplicación de imagen JFrame como lienzo Haga clic en la miniatura para ver la imagen completa Luego agregue una cuadrícula de pestañas y dos páginas de pestañas en Seleccione JTabbedPane en el área del contenedor de el área de selección de componentes y arrástrelo al JFrame. Después de colocar el JTabbedPane, haga clic derecho y seleccione Agregar JATabPage en el menú emergente para agregar dos páginas de pestañas al panel como se muestra en la figura.
Página de pestaña para agregar imágenes: haga clic con el botón derecho en la página de pestaña y seleccione Agregar JATabPage, luego seleccione TabTitle en la barra de propiedades para establecer el título de cada página de pestaña
p>
Los diagramas se pueden colocar en pestañas vacías de los componentes de Swing. Ahora tiene dos páginas de pestañas vacías. Puede seleccionar cualquier componente de Swing del área de selección de componentes y colocarlo en nuestra. ejemplo La página de la pestaña de desarrollador contiene dos pantallas con una serie de objetos JLabel y JTextField. Puede desarrollar rápidamente una aplicación similar a un gráfico. Como desarrollador de aplicaciones visuales, puede experimentar el poder de usar el compilador GUI de Abacus. desarrollar aplicaciones GUI complejas
El modo de perspectiva incluido en el compilador es una característica muy útil para el desarrollo de aplicaciones a corto plazo porque puede obtener una vista previa de la aplicación en tiempo de ejecución. modo seleccionando la opción Ejecutar en la barra de herramientas o presionando la tecla F
Lo que ves es lo que obtienes: Verifica los efectos visuales durante el desarrollo. Guarda tu trabajo. Presiona Ctrl S. o seleccione la opción Guardar. Nombre el proyecto devteam. Guárdelo en el directorio de ejemplos. Después de guardar el proyecto, abra el directorio de ejemplos de AbaGUIBuilder. Abra el archivo devteam proj. Todas las clases en Objetos Propiedades de objetos e incluso código Esta es una plataforma de expresión para sus proyectos visuales Agregar controladores de eventos Agregar controladores de eventos para cada objeto es un proceso sencillo. Todo lo que tiene que hacer es hacer clic en el objeto y seleccionarlo de la lista de eventos. Quiere interrumpir el evento generado y completar el código Java apropiado para el evento. Una vez más, el diseño de AbaGUIBuilder se ajusta a los patrones de Delphi y VB. Nuestro objetivo es ocultar la implementación de la interfaz de usuario, como los detectores de eventos. desarrolladores de aplicaciones. Por ejemplo, como se muestra en la figura. Para implementar un cuadro de diálogo de confirmación que aparece cuando se presiona el botón Salir, primero seleccione el evento actionPerformed del botón Salir y luego complete el siguiente código Java
La imagen muestra el componente visual agregando un controlador de eventos. Recuerde que los controladores de eventos no están disponibles en el modo de perspectiva IDE y solo se activan en tiempo de ejecución, por lo que debe compilar y ejecutar la aplicación para verificar. Resultados Agregar visualmente un menú y elementos de menú es otra característica poderosa que ahorra tiempo. Todo lo que tiene que hacer es Seleccionar entre los componentes.
Seleccione JMenuBar y colóquelo en cualquier lugar del marco. JMenuBar generalmente se coloca en la parte superior y las coordenadas XY son irrelevantes. Luego haga clic derecho en JMenuBar. Aparecerá un cuadro emergente como se muestra en la figura. ) y controladores de eventos al menú
La visualización de figuras agrega menús y elementos de menú y luego copia el código de evento actionPerformed del botón Salir al elemento de menú Salir para que se muestre el mismo cuadro de diálogo de confirmación. El cuadro aparece independientemente de si está seleccionado el botón Salir o el elemento del menú Salir. Finalmente, haga clic en Guardar en la barra de herramientas (Con? Compile) Ahora que ha completado su primera aplicación AbaGUIBuilder, ¿dónde está el código? A menudo escuchamos esta pregunta: ¿A dónde va el código? AbaGUIBuilder no crea código Java, pero el código Java generado internamente por el compilador no se ve ni se utiliza. De hecho, el compilador GUI compila el código interno en el archivo jar de la aplicación ejecutando un contenedor separado (renderizador). Código Java generado por AbaGUIBuilder en el directorio \bin\output, pero recuerde recordar estos códigos y usarlos externamente. Solo se usa como herramienta auxiliar para generar el archivo del proyecto (proj) en caso de que haya un problema con el código generado. por el compilador Después de que el compilador GUI genere dos archivos, el archivo jar de su aplicación y el archivo decl, cuando escriba el archivo contenedor, el archivo decl será útil, ya que contiene todas las definiciones de objetos y una función de entrada común getReferences() y se usará en el formulario de UI. Los elementos visuales se escriben como variables privadas. Podemos usar estas variables privadas en la sección del programa del archivo decl para lograr la separación de la lógica empresarial y la interfaz de usuario. Durante el proceso de desarrollo, le recomendamos que utilice el script runproz en la carpeta de ejemplo. ejecute el archivo jar de su aplicación. Este archivo de secuencia de comandos establece la ruta de clase y completa todos los archivos JAR necesarios. Utilice el contenedor de Java de muestra para ejecutar el JAR de la aplicación como se muestra. Cuando ejecute la aplicación devteam, el comando es runproz \abaguibuilder \samples\devteam jar
Diagrama de implementación de la aplicación Es importante comprender el mecanismo de runproz Aunque es muy simple, prestemos atención a la siguiente línea %JAVA_HOME%\bin\java exe exec %. exec es el parámetro del mecanismo de carga predeterminado proporcionado por el contenedor de muestra. AbaRenderer % se refiere a AbaGUIBuilder El nombre de la aplicación JAR Cuando la ruta y el nombre del JAR se pasan a exec java, cargará y ejecutará la aplicación JAR especificada. Mecanismo mediante el cual se ejecuta la aplicación JAR. Escriba su propio contenedor. El contenedor AbaRenderer es un objeto AbaRenderer que carga la aplicación. El contenedor del programa Java para el programa jar es un programa simple que requiere solo unas pocas líneas de código de clase pública. { public static AbaRenderer?m_AbaRenderer;? // Asignaciones para esta interfaz de usuario public static void main(String[] args){String docname = new String(args[ ]); try?{?System out println( Loading + docname); m_AbaRenderer = new AbaRenderer(docname true null);?boolean bTestLoad = m_AbaRenderer load();?if(bTestLoad)?m_AbaRenderer renderInterface() }?catch(Exception e)?{e p
rintStackTrace();}}} Al implementar una aplicación, puede optar por usar runproz y el contenedor de muestra para publicarla, o puede usar su propio contenedor y classpath cuando necesite agregar otras características a su contenedor. escriba su propio contenedor, como usar un oyente de biblioteca de terceros para inicializar manualmente el objeto, agregar código al cuadro combinado o finalmente separar la interfaz de usuario de la lógica empresarial, etc. Separe la lógica empresarial de la interfaz de usuario para separar La interfaz de usuario de la aplicación y Para separar la lógica empresarial, debe escribir su propio contenedor. Un ejemplo simple de separación es inicializar manualmente los componentes visuales de la aplicación a través del contenedor fuera de la herramienta de desarrollo y el proyecto. genera un archivo de declaración. Este archivo tiene Un método de acceso que puede inicializar una serie de variables privadas. Estas variables privadas son referencias a objetos visuales en el formulario. El método getReferences () permite a los desarrolladores acceder y manipular cualquier componente visual en el formulario. El siguiente programa ejecutivo está en la primera posición de la pestaña. La inicialización de un cuadro combinado demuestra la separación de la interfaz de usuario y la lógica empresarial en una aplicación simple.
public class?exec { public static AbaRenderer?m_AbaRenderer;// Declaraciones de variables para. esta interfaz de usuario... JComboBox privado JStComboBox;? // Asignaciones para esta interfaz de usuariopublic void getReferences(){… //Carga el objeto visual JComboBox en datos privados JComboBox JStComboBox= (JComboBox)m_AbaRenderer getObject( JComboBox );… }? // Asignaciones para esta interfaz de usuariopublic static void main(String[] args){String docname = new String(args[ ]);? try{System out println( Loading + docname = new AbaRenderer(docname true null); boolean bTestLoad = m_AbaRenderer load();if (bTestLoad) { m_AbaRenderer renderInterface(); getReferences();?// Acceso de muestra a objetosJStComboBox addItem( FL );JStComboBox addItem( CA );JStComboBox addItem( WA );JStComboBox addItem( MD );JStComboBox addItem( PA ); } }catch(Exception e){? e printStackTrace();}}} lishixinzhi/Article/program/Java/hx/201311/25630