2010-04-18 5 views
5

Tengo un JCheckBox que no debe ser revisado por el usuario cuando otro campo está vacío.¿La mejor manera de implementar la denegación de un cambio de valor por parte del usuario en Swing?

Así que ahora quiero tener un mensaje emergente de error y luego reiniciar la casilla (he considerado deshabilitar la casilla de verificación, pero la conexión al otro campo no es obvia, y un texto de información sobre herramientas IMO no es suficientemente visible).

¿Cuál es la forma correcta de hacerlo en Swing? A través de un PropertyVetoException? ¿Dónde lo tiro y dónde lo atrapo? Mi primera idea (probablemente fea) sería agregar un ChangeListener que a su vez muestra la ventana emergente y restablece el valor.

Editar: La pregunta es sobre Nikki (por debajo de captura de pantalla), una aplicación que estoy desarrollando, que geoetiqueta imágenes y los exporta a formato KMZ de Google Earth. La casilla de verificación se usa para seleccionar las imágenes para incluir en la exportación. Pero esto requiere que las imágenes se rompan primero (lo que a su vez requiere una marca de tiempo o manual). No creo que este requisito pueda hacerse obvio a través del diseño de la interfaz de usuario.

alt text http://www.brazzy.de/nikki/screenshot_nikki.png

+2

Parece que es un mal diseño de IU si la conexión entre los dos elementos de formulario no es obvia. Si la disponibilidad de uno depende directamente del otro, ¿por qué no están uno al lado del otro? –

+0

@Conspicuous Compiler: ver edición; No creo que esto sea realmente posible; incluso si estaban uno al lado del otro, el requisito no es obvio –

Respuesta

2

yo simplemente desactivar la casilla de verificación y añadir un mensaje que explica por qué la opción no está disponible. Una buena manera de mostrar el mensaje es mostrar un mini signo de admiración junto a la casilla de verificación y colocar el mensaje en una información sobre herramientas.

Aparecer una excepción a menudo se siente mal porque users don't read error messages. Para la mayoría de los usuarios, un mensaje emergente de error significa que la aplicación hizo algo mal, en su caso es el comportamiento normal.

Editar si insiste en dejar activada la casilla de verificación, otra forma de mostrarle al usuario que falta información sería mostrar los datos faltantes. P.ej. si falta latitud y longitud y el usuario hace clic en Exportar, establezca un fondo rojo en estos campos por solo un segundo. Esto mostrará claramente al usuario lo que falta.

En esta pantalla, ¿no quiere poner el mouse sobre el círculo rojo para entender qué está pasando?

validation http://www.vogella.de/articles/EclipseDataBinding/images/validation10.gif

+0

Los usuarios no leen mensajes de error explícitos, pero sí leen información sobre herramientas adjunta a mini signos de exclamación con un significado completamente no obvio. Lo siento, no compro eso ... –

0

El campo simplemente se debe permitir que desactivar la casilla de verificación. Si el acoplamiento no es intuitivo, entonces el diseño de la GUI debe reconsiderarse.


EDIT: lo dirige desde su página, y creo que la cuestión aquí es que en realidad tiene una tercera y cuarta etapa, además de seleccionar la carpeta, seleccione las imágenes. El tercer paso es validar imagen, y el cuarto es seleccionar imágenes para exportar. Creo que su problema es que esto no se transmite claramente en el diseño actual, y eso se refleja en su pregunta.

Le sugiero que cree una columna separada que contenga la casilla de verificación para cada imagen, y esa casilla de verificación ESA se desactivará hasta que la imagen pase la validación (paso 3). Tal vez con un texto explicativo en la columna sobre por qué la imagen no ha pasado aún.

+0

No creo que esto se pueda arreglar a través del diseño; ver edición de pregunta. –

1

No creo que la exportación JCheckBox se deba deshabilitar en absoluto. En su lugar, el Export JButton debería examinar la lista de exportación actual y mostrar las entradas anómalas de manera que permita la navegación hacia una fotografía elegida. Si todas las entradas son correctas, Exportar procedería como de costumbre.

Adición: Cree que tiene razón para mantener la interfaz lo menos modal posible. Mi modelo para esto sería archivos no guardados al salir de un editor o cambios no confirmados al cerrar un proyecto en un IDE.

Si se trata de una línea de estado en la parte inferior de la ventana, puede indicar el número de fotografías actualmente seleccionadas para exportar, agregando un recuento si aún hay necesidad de geocodificación.

+0

Sin duda una alternativa que vale la pena considerar. Pero tendría un poco de miedo de frustrar al usuario al hacer que vuelva a "arreglar" algo justo cuando pensaba que iba a ver resultados. –

+0

Es un problema interesante. Tu sitio es muy agradable, por cierto. – trashgod

Cuestiones relacionadas