如何更改未选中的 JList 项目的背景颜色?
How can i change the background color of a JList item that is not selected?
嘿嘿。我正在 Java 中编写一个删除非白名单文件的工具。不要问。它列出了用户使用 JFileChooser 选择的目录。这很好用,所有文件名都列在 JList 中(在我的例子中是在 JScrollPane 中)并显示在框架内。
现在我想从 .txt 文件中读取文件名并检查它们是否与列表中的名称匹配。阅读和比较没有问题。但如果文件与 .txt 文件中的文件之一匹配,我想设置绿色背景。如果不是,那么显示项目的背景应该是红色的。但是,如果可能的话,我该如何更改一行的这些背景呢?
很简单,使用以下方法将自定义 ListCellRenderer 设置为您的 JList:
list.setCellRenderer(myListCellrenderer);
现在在覆盖的方法 getListCellRendererComponent() 中执行如下操作:
public Component getListCellRendererComponent(.....) {
Component c = super.getListCellRendererComponent();
c.setBackGround(Color.blue)
return c;
}
当逻辑确定您应该将该行显示为绿色时(当文件名相同时),您还可以选择在该行的支持对象上设置状态并在 getListCellRendererComponent( ), 如果状态正确则设置背景为绿色。同样,您可以选择设置 Swing Timer
来恢复支持对象的状态。
嘿嘿。我正在 Java 中编写一个删除非白名单文件的工具。不要问。它列出了用户使用 JFileChooser 选择的目录。这很好用,所有文件名都列在 JList 中(在我的例子中是在 JScrollPane 中)并显示在框架内。
现在我想从 .txt 文件中读取文件名并检查它们是否与列表中的名称匹配。阅读和比较没有问题。但如果文件与 .txt 文件中的文件之一匹配,我想设置绿色背景。如果不是,那么显示项目的背景应该是红色的。但是,如果可能的话,我该如何更改一行的这些背景呢?
很简单,使用以下方法将自定义 ListCellRenderer 设置为您的 JList:
list.setCellRenderer(myListCellrenderer);
现在在覆盖的方法 getListCellRendererComponent() 中执行如下操作:
public Component getListCellRendererComponent(.....) {
Component c = super.getListCellRendererComponent();
c.setBackGround(Color.blue)
return c;
}
当逻辑确定您应该将该行显示为绿色时(当文件名相同时),您还可以选择在该行的支持对象上设置状态并在 getListCellRendererComponent( ), 如果状态正确则设置背景为绿色。同样,您可以选择设置 Swing Timer
来恢复支持对象的状态。