стилизация Combobox в Java с использованием Synth

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

Заранее спасибо!


person sstauross    schedule 02.12.2011    source источник
comment
решение пришло после того, как поле со списком использует список для отображения своих внутренних вещей, поэтому это то, что нужно изменить... поэтому я добавил стиль для списка: ‹style id=style› ‹opaque value=TRUE/› ‹state › ‹значение цвета=БЕЛЫЙ тип=TEXT_FOREGROUND/› ‹значение цвета=КРАСНЫЙ тип=TEXT_BACKGROUND/› ‹значение цвета=КРАСНЫЙ тип=ФОН/› ‹/состояние› ‹значение состояния=SELECTED› ‹значение цвета=КРАСНЫЙ тип=TEXT_FOREGROUND/ › ‹значение цвета=БЕЛЫЙ тип=TEXT_BACKGROUND/› ‹/состояние› ‹/стиль› ‹стиль привязки=тип стиля=клавиша региона=Список/›   -  person sstauross    schedule 02.12.2011


Ответы (2)


На самом деле я обнаружил, что полагаться только на атрибут списка недостаточно для создания эффекта зависания, который я хотел. Я попробовал код предыдущего ответа, но смог изменить цвет текста (а не цвет всей ячейки) только при наведении курсора на элемент. По умолчанию (в "Metal") списки JComboBox подсвечивают всю ячейку. Путем пробной ошибки я обнаружил, что следующая комбинация стиля «ComboBox.listRenderer» и стиля «Список» позволяет использовать этот эффект по умолчанию. В моем примере список имеет коричневый фон, черный текст и серую подсветку при наведении.

<style id="ComboBoxListRenderer">
     <opaque value="true"/>
     <state>
          <color type="TEXT_FOREGROUND" value="BLACK" />
     </state>
</style>
<bind style="ComboBoxListRenderer" type="name" key="ComboBox.listRenderer"/>

<style id="ListStyle">
    <opaque value="true" />
    <insets top="0" left="0" bottom ="0" right="0" />
    <state>
     <color type="BACKGROUND" value="#E0CEB0" />
     <color type="TEXT_BACKGROUND" value="#666666" />
    </state>  


person ewaltman    schedule 09.08.2012

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

<style id="style">
<opaque value="TRUE"/>

<state>
  <color value="WHITE" type="TEXT_FOREGROUND"/>
  <color value="RED" type="TEXT_BACKGROUND"/>
  <color value="RED" type="BACKGROUND"/>
</state>
<state value="SELECTED">
  <color value="RED" type="TEXT_FOREGROUND"/>
  <color value="WHITE" type="TEXT_BACKGROUND"/>
</state>

`

person sstauross    schedule 04.12.2011