2010-12-20 20 views
9

¿Hay algo así como WindowBuilder for Scala?¿Hay una GUI para crear GUI en Scala?

+0

espero que hay una posibilidad significativa de sólidas herramientas de interfaz gráfica de usuario basada en JavaFX2 surgirá tarde o temprano cuando se lance JavaFX 2.0. – Ivan

Respuesta

11

No conozco ningún constructor WYSIWYG GUI para Scala. Pero no necesitas uno. De hecho, estrictamente hablando, Scala no tiene tiene una GUI; solo usa la GUI (o GUI) de la plataforma subyacente.

Por lo tanto, el puerto JVM de Scala usa AWT, Swing o SWT y el puerto CLI de Scala usa WinForms o WPF. He escuchado rumores de puertos de Scala al tiempo de ejecución de ECMAScript y el tiempo de ejecución de Objective-C, y es de suponer que utilizarán HTML5 y Quartz/Cocoa, respectivamente.

Esto significa que puede simplemente usar las herramientas existentes, como Expression Blend para WPF o Matisse para Swing.

Tenga en cuenta, sin embargo, que al menos para Swing, existe la brillante biblioteca scala.swing, que contiene una DSL incorporada para compilar las GUI mediante programación. Esto no es WYSIWYG, así que no es exactamente lo que estás pidiendo, pero lo prefiero, porque es WYMIWYG (lo que significa es lo que obtienes), que con todas las herramientas GUI que he usado hasta ahora, parece para ser casi imposible de lograr.

+0

"El puerto JVM de Scala usa AWT, Swing o SWT y el puerto CLI de Scala usa WinForms o WPF. He escuchado rumores de puertos de Scala para el tiempo de ejecución de ECMAScript y el tiempo de ejecución de Objective-C" Me importa decir dónde lo hizo escuchar estos rumores? ¡Suenan interesantes! – soc

+0

Tengo que estar de acuerdo, pero me quedé atrapado varias veces con algunos eventos de repintado que no pude resolver. Pensé que la GUI podría generar el código correcto del que podría aprender. (No sé Java O Swing). Pero tal vez los ejemplos son una mejor idea. :) –

2

Al tener GUIs de compilación con JBuilder (y suponiendo que WindowBuilder funcione con los mismos principios), es conceptualmente posible desarrollar esqueletos de GUI barebone (como clases abstractas) en Java. Luego puede extenderlos o usarlos desde dentro de Scala. Se debe ser fácil de lograr eso (nótese que digo debe ser ya que no he hecho, y estoy meramente la hipótesis de relacionado, pero no la experiencia directa.)

El caso en cuestión, cuando desarrollar GUI, creo "vistas" abstractas, esqueletos abstractos con los diseños apropiados, componentes visuales, etc. y con call-backs predefinidos para inicialización, destrucción, visibilidad/invisibilidad, enhebrado, etc.

Luego , Clasifico la "vista" abstracta en una clase de "vista concreta" que hace el levantamiento pesado - registrando oyentes, lógica GUI, etc. Hacer las cosas de esta manera requiere más codazo (a veces mucho más) que simplemente mezclar el diseño GUI st Uff y cosas de lógica. Pero el enfoque que tiendo a seguir separa la lógica de la GUI y la lógica del comportamiento. Lo mantiene limpio.

Volviendo a su pregunta: Debería ser posible definir su clase de "vista concreta" en Scala. Con soporte completo para funciones como objetos de primer valor, cierre, lambdas y todos los objetos de FP, debería ser mucho más fácil implementar escuchas y manejadores de acciones de subprocesos con Scala.

Usted debe dar a este un intento y hacernos saber cómo va (y si es factible o suficientemente fácil para que sea perseguir la pena.)