2012-05-04 22 views
11

He construido muchos muchos GUI: s y no me gusta tener dependencias a las bibliotecas por lo que terminan haciendo gran parte de los fundamentos a mí mismo. Una cosa que termino haciendo una y otra vez es asignar primitivas a los componentes de la GUI.biblioteca de interfaz gráfica de usuario para el manejo de matrices primitivas y/colecciones de primitivas

Por ejemplo, si se trata de un boolean A menudo uso JCombobox con dos opciones ("true", "false") y si es int uso un JTextField. Gran parte del trabajo es ir desde y hacia el texto ...

Algunas asignaciones ejemplo:

  • int o Integer =>JTextField o JSpinner
  • boolean =>JTextField, JComboBox o JCheckBox
  • int[] =>JList (con el campo "agregar" y los botones "quitar")
  • Set<Byte> => probablemente el mismo que las matrices

Por lo tanto, a las preguntas:

  • ¿Existe ya una biblioteca que tiene asignaciones de este tipo o necesito "inventar" otra vez?
  • He visto jfg que usa refection y SWT como frontend (puede implementar una nueva interfaz utilizando swing pero eso es exactamente lo que intento evitar). ¿Hay una biblioteca simular que usa swing y refection?
+1

buena pregunta, 1 – mKorbel

+2

booleano Guess se deben asignar a JCheckBox o JToggleButton. Pero las preguntas son buenas +1 – StanislavL

+2

Esto me recuerda cómo 'JTable' selecciona renderizadores y editores. –

Respuesta

2

hay 2 bibliotecas de enlace que he tenido alguna experiencia con:

  1. glazed lists - esta biblioteca brilla absolutamente cuando se desea asignar una colección a un JTable (un elemento por fila, las columnas son atributos del objeto).
  2. jgoodies binding - una biblioteca de propósito general para el mapeo de atributos de bean a los elementos de la GUI. es un poco más complejo y difícil de recoger.

y por qué primitivos? Supongo que almacena su modelo (el conjunto de todos los valores mostrados/editados por la interfaz gráfica de usuario) en uno o más Objetos, ¿no? De ser así, podría confiar en el autoboxing y trabajar con wrappers de objetos en la GUI.

1

Uno debe mencionar JavaFX, que todavía no es mi cerveza.

0

Puede que le resulte interesante echar un vistazo a seesaw que es una biblioteca de GUI para Clojure basada en Swing.

Hace un buen trabajo al envolver la funcionalidad de Swing en funciones bastante simples, algunas buenas ideas de diseño, incluso si no termina utilizándolas directamente.Por ejemplo, se puede enlazar controles directamente a los objetos de datos mutables:

; Bind a the value of a slider to an atom, with a transform 
; that forces the value to [0, 1] 
(let [s (slider :min 0 :max 1) 
     a (atom 0.0)] 
    (bind s (transform/100.0) a)) 
Cuestiones relacionadas