繁体   English   中英

在Java中创建JList,如何更改条目的背景颜色?

[英]Creating a JList in Java, how would I change the background color of a entry?

好的,所以我有一个包含几个项目的JList 我选择一个项目,然后单击一个按钮。 当我单击按钮时,我希望该项目的背景颜色永久更改。

我已经创建了一个自定义渲染器,但我可以用它来改变整个背景的颜色,或者在选中它时更改所选项目背景的颜色。 那不是我想要的。 我试图使用getBounds获取Rectangle对象(所以我可以做一些像在Rectangle区域内绘制所有内容的东西?)但我甚至不知道如何开始。

我现在觉得JListCellRenderer不支持这种东西,所以我想我必须做一些事情,比如创建一个readOnly textFields系列,单独设置它的样式,并以某种方式将它们显示为列表?

我真的不需要任何代码(除非你想给出一个例子),我只是在寻找一个如何做到这一点的大方向。

抱歉,长篇文章。 谢谢!

你做了同样的事情,但如果用户的动作表明它应该被锁定,那么写出你的代码逻辑来锁定渲染的颜色。 关键在于你的代码逻辑。 也许您想要更改正在渲染的对象的状态,或者您可能希望更改将渲染颜色保存为值并将显示的对象保存为键的Map的状态。 我可能会选择后者。

例如,

// 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来决定要绘制的背景颜色。
  • 当用户进行选择并使项目具有新的背景颜色时,您可以更改地图所持有的颜色并重新绘制列表。
  • 如果要显示其背景,请确保使渲染器不是不透明的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM