好的,所以我有一个包含多个项目的JList
。我选择一个项目,然后单击一个按钮。当我单击该按钮时,我希望该项目的背景颜色永久更改。
我已经创建了一个自定义渲染器,但我所能做的就是更改整个背景的颜色,或者在选中时更改所选项目的背景颜色。这不是我想要的。我试图使用getBounds获得Rectangle对象(这样我就可以做一些事情,比如在矩形区域内绘制所有东西?),但我甚至不知道如何开始。
我现在认为JList
的CellRenderer
不支持这种东西,所以我想我必须做一些事情,比如创建一系列readOnly文本字段,单独设置其样式,并以某种方式将它们显示为列表?
我真的不需要任何代码(除非你想举一个例子),我只是在寻找如何做到这一点的大致方向。
抱歉发了这么长的短信。谢谢
您执行的操作与您正在执行的操作相同,但如果用户的操作指示应该锁定渲染颜色,则编写代码逻辑以锁定渲染颜色。关键在于代码逻辑。也许您想要更改正在渲染的对象的状态,或者您想要更改将渲染的颜色作为值并将显示的对象作为关键帧的贴图的状态。我可能会选择后者。
例如
// ListItemType is whatever type is being displayed in your JList.
Map<ListItemType, Color> listItemBackground = new HashMap<ListItemType, Color>();
// now add each item to the JList with the default background color.
- 渲染器将使用此贴图来决定要绘制的背景颜色
- 当用户做出选择并使项目具有新的背景色时,可以更改Map所保持的颜色并重新绘制列表
- 如果要显示其背景,请确保渲染器不不透明