2012-01-05 10 views
8

¿Cuál es el uso previsto del nombre propiedad de los componentes oscilantes? ¿Se usa columpio internamente?¿Cuál es el nombre propiedad de los componentes oscilantes?

Antecedentes: Un colega implementó un mecanismo de internacionalización al almacenar la clave para la cadena de texto en la propiedad del nombre. Luego, simplemente recorre todos los elementos de oscilación y obtiene la clave almacenada en el nombre propiedad del componente. Él argumentó que la propiedad del nombre no parece ser utilizada de otra manera y que esta era la forma más fácil de hacerlo.

Respuesta

3

¿Se utiliza columpio internamente?

Respuesta corta: sí.

Respuesta más larga: bastante fácil de verificar: simplemente construye algunos ui y camina por el árbol. O mira f.i. la SwingLabs-Demo (no puede resistir :-),

  • clic en la tarea de demostración JXTree y ver los nombres de algunos niños de un simple JFrame según lo establecido por oscilación (que se muestra en el TreeNode, entre paréntesis).
  • cambio de la LAF a Nimbus, haga clic en la tarea de demostración JXTreeTable, mover el puntero del ratón sobre la barra de desplazamiento de la tabla de árbol y ver el nombre de los botones de la barra de desplazamiento según lo establecido por la LAF

siguiente es la pregunta: ¿eso oscilación la configuración interna interfiere con la configuración del nombre por razones de aplicación?

Respuesta corta: difícil de decir, muy probablemente no respuesta

más larga: los ajustes internos que he visto son poco probable que sea sobrescrito por necesidades de la aplicación, ya que están profundamente ocultos en la jerarquía de contenedores. De hecho, algunos marcos como f.i. SAF utiliza el nombre para inyección de recursos (de manera similar a lo que describe su colega). Mi propio framework FormBuilder (no mantenido) fue para las restricciones de diseño.

La vaga (es decir: no definido) definición de la propiedad name es tanto una ventaja como una trampa:

  • adv: sí, cualquier código puede usarlo, no tiene contrato de bienes
  • trampa: posiblemente hay muchos usuarios en competencia de esa propiedad
+0

¡Muchas gracias por su respuesta detallada! Supongo que lo dejaré así, dado que es una aplicación bastante pequeña, el riesgo de que otros códigos interfieran no es demasiado grande. – mort

8

Nombre del componente de javadoc "Establezca u obtenga el nombre del componente. Esto puede ser útil cuando necesita asociar texto con un componente que no muestra texto". Entonces creo que está bien usar el nombre.

También puede colocar algo en las propiedades del componente.

+2

+1 para las propiedades del cliente. – trashgod

2

En mi experiencia, nunca he encontrado ningún problema al configurar el nombre de un componente Swing. Para los componentes Swing "hoja" (que usa directamente, como JLabel, JButton, JMenu ...), null siempre se deja en null por Swing. Como se menciona en @kelopatra, los componentes internos de los componentes Swing "complejos" pueden tener nombres asignados, pero generalmente no se puede acceder directamente a estos componentes internos (que no sean el árbol de jerarquía copmponente).

Según los usos de la propiedad name, a menudo se usa para inyección de recursos (i18n), pero también puede ser extremadamente útil para la automatización de UI (para pruebas o demos), porque la mayoría de los robots (ej. FEST Swing) capaz de encontrar un componente por nombre, siempre que asigne nombres únicos a sus componentes.

Cuestiones relacionadas