#java #swing #user-interface
#java #swing #пользовательский интерфейс
Вопрос:
Я использую Swing с пользовательским интерфейсом по умолчанию (без каких-либо специальных оболочек).
Как сделать некоторые кнопки / текстовые поля более яркими или более бледными? Это означает, что пользователь должен / не ожидается (хотя и не полностью отключен) нажать кнопку.
Пример: пользователь изменил поле — кнопка «Сохранить» становится более яркой (например, зеленой). Статус «сбой компиляции» — кнопка «выполнить» бледная (хотя пользователь все еще может выполнить предыдущую версию чего-либо). Пользователь заполнил поле «пароль» — он ожидал заполнить «подтверждение пароля» — поэтому оно стало ярким.
- У меня есть: {обычный, отключенный, невидимый}
- Я хочу: {яркий, обычный, бледный, отключенный, невидимый}.
Как сделать это правильно, без взлома с рисованием вещей, с разделением содержимого и презентации? Я хочу, чтобы она выглядела хорошо, даже если пользователь переопределил настройки цвета в системе. Должен ли я использовать какой-либо другой инструментарий?
Я ожидаю чего-то вроде того, что я устанавливаю подсказки для данного элемента управления, а затем создаю подсказки для чтения и применяет дополнительные параметры внешнего вида (например, более яркий фон), не имея дела с конкретными цветами. Возможно, один скин будет использовать другой фон, а другой скин будет использовать другой шрифт для этого эффекта. Как в случае включения / выключения, но более гибко.
Комментарии:
1. Я знаю о setEnabled, но это может только сделать ее бледной и отключить ее. Я хочу «мягкое отключение» обратное.
Ответ №1:
Просто используйте setBackground(), чтобы изменить цвет в соответствии со статусом компонента. Может быть, даже создать пользовательский компонент, у которого есть метод изменения статуса, и он знает, какой цвет соответствует этому статусу.
Комментарии:
1. Вы можете выбрать текущий цвет компонента и вызвать brighter () или darker () , однако я думал, что вы просто определите свои собственные 5 цветов и сохраните их где-нибудь в константах для использования компонентом.
2. Что, если пользователь изменит системный скин на какой-либо другой? Как я думаю, хорошее приложение не должно полагаться на то, какие цвета имеют элементы управления пользовательского интерфейса, если оно само не управляет оболочками.
3. Затем укажите конкретный внешний вид. Я предлагаю Nimbus. (Если вы собираетесь начать возиться с цветами кнопок, тогда имеет смысл указать внешний вид.
4. Итак, невозможно иметь больше вариантов, чем просто «включено» и «отключено», не полностью контролируя внешний вид, верно? Я ожидал чего-то вроде того, что я устанавливаю подсказки для данного элемента управления, а затем создаю подсказки для чтения и применяет дополнительные параметры внешнего вида (например, более яркий фон). Как в случае включения / выключения, но более гибко.
5. @ Vi, у тебя может быть больше вариантов, они могут выглядеть неправильно. Разница с включенным и отключенным заключается в том, что каждый внешний вид определяет внешний вид для этих состояний. Любые новые состояния не будут поддерживаться специально другим внешним видом.
Ответ №2:
Я не уверен, что вижу ценность в том, чего вы пытаетесь достичь из приведенных вами примеров. Возможно ли, что пользователи могут запутаться в том, как работает приложение, если вы предоставите им функциональность, которая отличается от их ожидаемого пользовательского опыта?
Если пользователь еще не изменил поле, кнопка сохранения может быть полностью отключена. Какая ценность в возможности сохранения, если не было внесено никаких изменений. В качестве альтернативы, если вы все еще твердо намерены провести это различие, можете ли вы сделать это другим способом? Возможно, визуальная очередь, значок рядом с измененным полем, выделение ячейки или *, добавленный в конец текста в названии окна, чтобы показать, что в окне есть несохраненные изменения, возможно?
С точки зрения чисто пользовательского опыта, я не думаю, что вы хотите вмешиваться в то, как люди ожидают, что приложения будут вести себя, если у вас нет действительно веской причины!
Комментарии:
1. Так что лучше не вводить больше состояний, кроме enabled и disabled? Как насчет состояния «рекомендовано»? Означает, что пользователь должен нажать эту кнопку, но бывают случаи, когда это не требуется.
2. Для вашего состояния «совет» вы могли бы поместить маленький значок рядом с выбранной кнопкой или изменить границу кнопки.