java - 为满足特定语句的 JList 元素设置前景

标签 java swing jlist listcellrenderer

我一直对 JLists 及其渲染器有问题。我的类 Result 具有字段:private double sum; 我还创建了一个包含 Result 类实例的 JList:

model = new DefaultListModel<Result>();
list = new JList<>(model);

我想将列表中满足以下语句的元素的前景或背景(以两者为准)设置为红色:result.sum > 10

我试图编写一个扩展ListCellRenderer的类,但它以不值得一提的灾难告终。请帮忙。

import java.awt.Component;

import javax.swing.JList;
import javax.swing.ListCellRenderer;

    public class MyCellRenderer implements ListCellRenderer<Result> {

        @Override
        public Component getListCellRendererComponent(JList<? extends Result> arg0, Result arg1, int arg2, boolean arg3, boolean arg4) {
            if(result.getSuma() > 10)
                setForeground(Color.red);
            return arg0;
        }        
    }

最佳答案

我建议您使用 DefaultListCellRenderer 并为您的海豚重写其 getListCellRendererComponent 方法,其中使用您的自定义返回 super.getListCellRendererComponent() 。我给你一个 String 的 Renderer 示例,根据你的用户修改它:

private static ListCellRenderer<? super String> getCellRenderer() {
    return new DefaultListCellRenderer(){
        @Override
        public Component getListCellRendererComponent(JList<?> list,Object value, int index, boolean isSelected,boolean cellHasFocus) {
            Component listCellRendererComponent = super.getListCellRendererComponent(list, value, index, isSelected,cellHasFocus);
            if(value.toString().length()>1){
                listCellRendererComponent.setBackground(Color.RED);
            } else {
                listCellRendererComponent.setBackground(list.getBackground());
            }
            return listCellRendererComponent;
        }
    };
}

该方法为长度大于1的文本设置背景颜色。

enter image description here

关于java - 为满足特定语句的 JList 元素设置前景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169657/

相关文章:

java - 如何将 JList 元素文本复制到剪贴板

java - 这种方法有什么问题 - (在 Jlist 中添加元素)?

java - Quartz 属性不会触发 Quartz Job

java - 如何在最佳成绩历史记录 Activity 中添加取得最佳成绩的玩家的姓名?

Java Swing - 为什么 JComponent 不显示?

java - 调用 JEditor.setEditable() 时更改光标悬停在超链接上

java - 与 IE11 浏览器一起使用 selenium 自动化的稳定版本是什么?

java - 使用 spring Data JPA 将 sql 查询的结果映射到 pojo

java - 如何使 JFileChooser 默认为计算机 View 而不是我的文档

swing - 如何获取 JList 的大小?