Как сделать кнопку выделенной или бледной в Java swing правильно?

#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. Для вашего состояния «совет» вы могли бы поместить маленький значок рядом с выбранной кнопкой или изменить границу кнопки.