2010-04-11 14 views
18

Gracias por sus respuestas a my previous question about GUI in java. Ahora me pregunto cuáles son las soluciones elegidas por los profesionales para obtener una buena GUI, para aplicaciones "reales". ¿Usas swing y JComponents y solo cambias el "look and feel"? ¿Prefieres awt u otra biblioteca?¿Cómo hacen los "profesionales" una GUI en Java?

Lo siento si esta pregunta suena raro, soy estudiante y no se sabe muy bien cómo se utiliza Java en el mundo real ...

+2

@Jules Olléon: envío software comercial escrito en Java que funciona en Windows, OS X y Linux. Utilizo Swing y el editor de GUI de IntelliJ (que es genial porque oculta automágicamente una gran cantidad de código Swing sin interés extenso y sin sentido) y algunos componentes hechos a medida (estos funcionan al 100% en todas las plataformas). Como una barra de progreso dual/tri/cuádruple personalizada, una lista personalizada de "encontrar según se escribe" (como la que Google está utilizando para sugerencias) y algunos componentes personalizados más avanzados específicos de mi dominio problemático. – SyntaxT3rr0r

+0

@WizardOfOdds: ¿Qué LaF está utilizando en Windows y Linux? ¿Estás usando el estilo de Windows y GTK o Swing por defecto? – Jonas

+0

@Jonas: en Windows ofrecemos a nuestros usuarios la opción entre el diseño Swing predeterminado y Nimbus. En Linux es el Swing predeterminado, sea lo que sea que sea: pero hay un * lote * de problemas (incluidas muchas preguntas aquí en SO). Por ejemplo, tenemos "pestañas que se pueden cerrar" y * debemos * ejecutar debajo de 1.5. Por lo tanto, tenemos nuestro propio procesador de pestañas, etc. Es un mundo * salvaje * de incompatibilidades :) El software * funciona * en Linux y nosotros los desarrolladores lo desarrollamos y probamos en Linux, pero solo estamos vendiendo en OS X y Windows :) – SyntaxT3rr0r

Respuesta

9

En nuestra empresa utilizamos Swing, ya que es compatible con la JVM de fábrica, pero utilizamos colores de fondo codificados por colores para algunos paneles y botones.

Si utilizáramos algo diferente, como SWT o Jambi, también tendríamos que implementar esos marcos para todas las plataformas, y probar esos marcos para todos los sistemas operativos (OSS) y las versiones (compatibles) de Java. No es agradable en absoluto.

Sin embargo, es bastante difícil crear una buena aplicación receptiva con Swing; así que realmente necesitas usar SwingWorker y demás. Con un poco de experiencia, sin embargo, puedes crear una buena aplicación de esa manera.

E incluso si no es el marco más rápido para desarrollar, el tiempo de desarrollo es realmente pequeño en comparación con la definición de los requisitos funcionales de la interfaz de usuario, y las pruebas y soporte cuando se lanza la versión.

Dicho esto, nuestro objetivo son los equipos de sobremesa. Si se dirige a dispositivos móviles o también necesita una interfaz web, sus opciones pueden variar.

4

Yo no creo que nadie prefiere AWT más. Swing lo suplantó por completo hace once años, construyéndose encima para corregir fallas en el diseño de AWT 1.0.

Swing no es la única forma en que los profesionales crean interfaces de usuario Java. Eso funciona para computadoras de escritorio, pero ahora también hay JavaFX. Para la web, las IU se crean utilizando HTML, CSS, JavaScript y JSP.

+2

¡Por el amor de Dios, no use AWT! Desarrollarse como una aplicación web tiene numerosas ventajas, una de las cuales es una implementación más sencilla. – Stephen

+0

@Stephen Las GUIs de AWT y las aplicaciones web son totalmente diferentes. Depende de lo que trates de hacer. Sin embargo, Swing tiene una ventaja sobre AWT, aunque el paquete AWT todavía se usa para el manejo de eventos. – aduric

+0

@aduric, no tenía la intención de presentarlos de la misma manera. Me limité a decir dos cosas: 1) las GUI son malas, y 2) una aplicación web tiene numerosas ventajas. Sin embargo, las GUI y las aplicaciones web no son totalmente diferentes; por lo general, puede hacer la mayor parte de lo que le gustaría hacer localmente en una aplicación web. – Stephen

1

Mi experiencia es que la mayoría de las organizaciones que desean crear interfaces gráficas ricas siguen utilizando Swing, y de forma manual pasar por todas las molestias de los controladores de distribución, etc.

El uso de SWT es bastante limitado a las organizaciones que utilizan el Eclipse RCP como su plataforma. No estoy seguro de por qué no ha funcionado fuera de esta plataforma.

Es triste admitir, pero las GUI de Java Swing generalmente no se ven bien a menos que pases mucho tiempo creando una sensación más nativa para ellas. Incluso entonces, a menudo pierden estética ante programas equivalentes escritos específicamente para Windows y que usan API de Windows como WinForms.

+0

¡Debe probar el diseñador de GUI en Netbeans! –

+0

Tener el UIManager estableciendo la apariencia de la clase del sistema realmente está bien en Windows. Todo se ve casi igual que en una aplicación nativa de Windows. Hay algunas pequeñas diferencias aquí y allá (principalmente en los componentes AWT), pero Swing hace un buen trabajo emulando el aspecto nativo. – bgroenks

0

Macintosh OS X crea su propio tiempo de ejecución de Java. Le dan a los componentes Swing la misma apariencia que las aplicaciones nativas.

Uso estrictamente Swing. Distribuyo aplicaciones de escritorio "reales" a través de Web Start para Mac y Windows que interactúan con el lector de tarjetas inteligentes del usuario.

NetBeans IDE le ofrece una forma WYSIWYG de crear sus formularios. Lo probé, y está bastante limpio, pero aún usamos Eclipse como nuestro IDE y diseñamos los formularios en el código.

+1

El editor WYSIWYG de NetBeans es una pesadilla. Si puede pagarlo, recomendaría JFormDesigner, o simplemente lo haría a mano con un administrador de diseño. Puede ser más trabajo al principio, pero a la larga tiene más control. – cdmckay

+0

Lo sentimos, no lo es. Usted tiene el control total de lo que va donde y todas las propiedades y enlaces y todo eso. Sólo tienes que saber dónde buscar. Por cierto: hasta donde yo sé, MacOSX hace que * AWT * parezca macos aqua, no swing. – Tedil

+0

Pesadilla ... ¿Por qué? –

1

lo general el uso oscilación becuse se admite en los JRE estándar de cada la caja. Normalmente hacemos el diseño de formulario inicial y la conexión de evento en Netbeans y luego lo exportamos a lo que deseamos, Eclipse, por ejemplo.

Netbeans escupe Java pura usando bibliotecas estándar (más un jar o dos que debe incluir) por lo que no es gran cosa diseñar el formulario en Netbeans y luego pasar a otra cosa.

Algunas personas sugirieron hacer el diseño del formulario a mano utilizando un administrador de diseño. Veo eso como una opción solo si estás haciendo algo grande y muy bien presupuestado que tiene que mantenerse al infinito. De lo contrario, es demasiado tiempo para valer la pena.

1

Confiamos en SWT para nuestras GUI de Java. Sí, debe incluir una biblioteca nativa externa, pero la apariencia es nativa, más receptiva (aunque Swing se ha vuelto mucho más rápida en los últimos años) y sin interrupciones con otras aplicaciones en la plataforma de destino.