Лучший способ реализовать отказ от изменения значения пользователем в Swing? - PullRequest
5 голосов
/ 18 апреля 2010

У меня есть JCheckBox, который не должен проверяться пользователем, когда определенное другое поле пусто.

Так что теперь я хочу иметь всплывающее окно с ошибкой, а затем сбросить флажок (я рассмотрелснятие флажка, но соединение с другим полем неочевидно, а подсказка с текстом IMO недостаточно видима.

Какой правильный способ сделать это в Swing?Через PropertyVetoException?Куда я его кидаю и куда ловлю?Моей первой (возможно, некрасивой) идеей было бы добавить ChangeListener, который сам показывает всплывающее окно и сбрасывает значение.

Редактировать: Вопрос о Nikki (снимок экрана ниже), приложение, которое я разрабатываю и которое геотегирует изображения и экспортирует их в формат KMZ Google Планета Земля.Флажок используется для выбора изображений для включения в экспорт.Но для этого необходимо сначала пометить изображения (что, в свою очередь, требует либо метки времени, либо ручного назначения).Я не думаю, что это требование можно сделать очевидным с помощью макета пользовательского интерфейса.

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

Ответы [ 3 ]

2 голосов
/ 18 апреля 2010

Я бы просто отключил флажок и добавил сообщение, объясняющее, почему опция недоступна. Хороший способ показать сообщение - показать мини-восклицательный знак рядом с флажком и поместить сообщение во всплывающую подсказку.

При возникновении исключения часто возникает ошибка, поскольку пользователи не читают сообщения об ошибках . Для большинства пользователей всплывающее сообщение об ошибке означает, что приложение сделало что-то не так, в вашем случае это нормальное поведение.

Редактировать Если вы настаиваете на том, чтобы флажок был включен, другим способом показать пользователю, что какая-то информация отсутствует, будет мигать отсутствующие данные. Например. если широта и долгота отсутствуют, а пользователь нажимает кнопку «Экспорт», на секунду установите красный фон для этих полей. Это ясно покажет пользователю, чего не хватает.

Не хотите ли на этом экране навести курсор мыши на красный круг, чтобы понять, что происходит?

проверка http://www.vogella.de/articles/EclipseDataBinding/images/validation10.gif

1 голос
/ 18 апреля 2010

Не думаю, что экспорт JCheckBox вообще должен быть отключен. Вместо этого сам экспорт JButton должен проверить текущий список экспорта и отобразить любые аномальные записи таким образом, чтобы можно было перемещаться к выбранной фотографии. Если все записи верны, экспорт будет продолжаться как обычно.

Приложение: Вы считаете, что вы правы, чтобы интерфейс был как можно более немодальным. Моей моделью для этого могут быть несохраненные файлы при выходе из редактора или незафиксированные изменения при закрытии проекта в IDE.

Если это строка состояния в нижней части окна, вы можете указать количество фотографий, выбранных в настоящее время для экспорта, добавив счетчик, если требуется геокодирование.

0 голосов
/ 18 апреля 2010

Поле должно быть просто разрешено отключить флажок. Если связь не интуитивно понятна, возможно, придется пересмотреть компоновку графического интерфейса.


РЕДАКТИРОВАТЬ: я запустил его с вашей страницы, и я считаю, что проблема здесь в том, что у вас есть третий и четвертый шаг в дополнение к выбору папки, выберите изображения Третий шаг - проверка изображения, а четвертый - выбор изображений для экспорта. Я думаю, что ваша проблема в том, что это не совсем ясно отражено в текущем макете, и это отражено в вашем вопросе.

Я бы посоветовал вам создать отдельный столбец, содержащий флажок для каждого изображения, и этот флажок ТА отключен, пока изображение не пройдет проверку (шаг 3). Возможно, с пояснительным текстом в столбце о том, почему изображение еще не прошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...