gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:02:18 25 4
gpt4 key购买 nike

我一直对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com