如何更改未选中的 JList 项目的背景颜色?

嘿嘿 我正在用 Java 编写一个删除非白名单文件的工具。不要问。它列出了用户使用 JFileChooser 选择的目录。这很好用,所有文件名都列在 JList 中(在我的例子中是在 JScrollPane 中)并显示在框架内。

现在我想从 .txt 文件中读取文件名并检查它们是否与列表中的名称匹配。阅读和比较没有问题。但如果文件与 .txt 文件中的文件之一匹配,我想设置绿色背景。如果不是,那么显示项目的背景应该是红色的。但是,如果可能的话,我如何才能更改一行的这些背景呢?


HUX布斯
浏览 128回答 1
1回答

潇潇雨雨

很简单,使用以下方法将自定义 ListCellRenderer 设置为您的 JList:list.setCellRenderer(myListCellrenderer);现在在覆盖的方法 getListCellRendererComponent() 中执行如下操作:public Component getListCellRendererComponent(.....) {    Component c = super.getListCellRendererComponent();    c.setBackGround(Color.blue)    return c;}当逻辑确定您应该将行显示为绿色时(当文件名相同时),您还可以选择在行的支持对象上设置状态并在 getListCellRendererComponent() 中测试该状态,设置背景如果状态正确则为绿色。同样,您可以选择设置 SwingTimer以恢复支持对象的状态。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java