Yod*_*oda 2 java swing jlist listcellrenderer
我JLists和他们的渲染器一直存在问题.我有Result一个有字段的类:private double sum;
我还创建了一个JList包含Result类的实例:
model = new DefaultListModel<Result>();
list = new JList<>(model);
Run Code Online (Sandbox Code Playgroud)
我想为列表中满足此语句的那些元素设置前景或背景(以较小者为准)为红色: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;
}
}
Run Code Online (Sandbox Code Playgroud)
我建议你使用DefaultListCellRenderer和覆盖getListCellRendererComponent你的porpuses的方法,在super.getListCellRendererComponent()你的自定义返回.我给你一个渲染器的例子,String为你的porpuses修改它:
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;
}
};
}
Run Code Online (Sandbox Code Playgroud)
此方法为文本设置背景颜色,其长度大于1.

| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |