小编Rem*_*los的帖子

如何更改JComboBox显示区域的外观

我正在为JComboBox使用自定义BasicComboBoxRenderer,并且我已经更改了下拉列表项的外观.但是,这些更改也适用于组合框中显示的单个顶部项目(不知道如何调用它).

如果可能的话,我希望顶部项目独立于列表中的其他项目.我还想在聚焦时摆脱顶级项目的蓝色(setFocusable(false)不是我想要的).

我试图使用"渲染器索引"(-1)来影响顶部项目,但它似乎没有帮助.

有任何想法吗?

PS不幸的是我无法添加图像更清晰(没有声誉).

编辑:当我说我希望顶部项目独立于下拉列表中的所有其他项目时,我的意思是总是看起来与其他项目不同.例如,在我的自定义BasicComboBoxRenderer中,我将所选项目设置为具有不同的背景,但此背景也适用于顶部项目(因为所选项目成为组合框的顶部项目).

编辑2:顶部项目=我的意思是组合框显示区域,所以我想影响显示区域显示的项目而不是下拉列表中的第一项.我设法通过在组合框本身和setFocusable(false)上使用setBackground来做到这一点(这不是很有用,因为我想保持焦点机制).但问题是(焦点问题除外)如果我通过自定义的BasicComboBoxRenderer或ListCellRenderer类在列表中的每个项目上设置边框,则在显示区域中显示的项目上会出现相同的边框.所以这里有两个问题:

- 有没有办法区分下拉列表中的项目布局和显示区域中的单个项目?

- 有没有办法在不禁用焦点机制的情况下禁用组合框的焦点颜色,就像我们在按钮上使用setFocusPainted(false)一样?(我还尝试在组合框中添加自定义FocusListener,但是通过focusGained()对背景进行的任何更改仅影响按钮而不影响显示区域中显示的项目.

很抱歉混乱和多次编辑......

java swing jcombobox listcellrenderer

2
推荐指数
1
解决办法
5061
查看次数

标签 统计

java ×1

jcombobox ×1

listcellrenderer ×1

swing ×1