こんにちは、私が持っているコンボボックスの背景を白以外の別の色に設定したいのですが、レンダリング中にユーザーがクリックして内部の項目から選択すると、synth を使用してそれをどのように達成できますか??
前もって感謝します!
実際、リストの属性だけに依存するだけでは、必要なホバリング効果を作成するには不十分であることがわかりました。前の回答のコードを試しましたが、要素の上にカーソルを置いたときに、テキストの色 (セル全体の色ではなく) しか変更できませんでした。デフォルトでは ("Metal" の場合)、JComboBox リストはハイライトをセル全体に適用します。試行錯誤の結果、次のように "ComboBox.listRenderer" スタイリングと "List" スタイリングを組み合わせると、その既定の効果が有効になることがわかりました。私の例では、リストには黄褐色の背景、黒のテキスト、ホバー時の灰色のハイライトがあります。
<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>
解決策は、コンボボックスがリストを使用してその内部のものを表示するため、何を変更する必要があるかという事実の後に来ました...だから私はしました:
<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>
`