List 分行变色问题! 我写了个List,里面放的是日志。在界面上给可户看。但是想把错误的日志和正常日志,区分开。想错误日志显示红色,正常的就是黑色。但是List好象不支持!只能设置整个List的字体和颜色。list.setForeground();谁知道怎么做啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以实现,代码如下:class RendererList extends JPanel implements ListCellRenderer { private JPanel panel = null; RendererList(JPanel panel) { this.panel = panel; this.panel.setBorder(BorderFactory.createCompoundBorder()); setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHashFocus) { if (value != null) { //这里处理 if (value.toString().equals("中国")) { this.setBackground(new Color(210, 210, 210)); //setIcon(new ImageIcon(this.getClass().getResource( //"images/add.gif"))); } else if (value.toString().equals("美国")) { this.setBackground(new Color(100, 110, 210)); } } if (isSelected) { this.setBackground(new Color(20, 110, 210)); //this.panel.setBackground(new Color(20,110,20)); //this.panel.setForeground(new Color(80,110,20)); this.panel.setBorder(BorderFactory.createLineBorder(Color.black)); } if (!isSelected) { this.setBackground(new Color(255, 255, 255)); this.panel.setBackground(new Color(255, 255, 255)); this.panel.setBorder(BorderFactory.createEmptyBorder()); } return this.panel; }}然后:this.list.setCellRenderer(new RendererList(this.panel));代码的意思是用panel模拟了list里面的每一条 if(i%2==0) { out.println("<tr class='even'>"); }else{ out.println("<tr class='ood'bgcolor=eeeeee>"); }i为行的变量 根据这个你可以稍做修改应该就可以了。 你自己继承一个CellRenderer就可以;l.setCellRenderer(new DefaultListCellRenderer() { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if((index & 1) == 1) comp.setBackground(Color.RED); else comp.setBackground(Color.BLACK); return comp; }}); 这个不要在List中实现,你可以用logic标签来实现 <logic:notEmpty name="你的list对象"> <logic:iterate id="result" name="你的list对象" type="bean类"> <tr height="18" > <td nowrap="nowrap"> <logic:equal name="result" property="state" value="正常日志"> <bean:message key="userinfo.able"/> </logic:equal> <logic:equal name="result" property="state" value="错误日志"> <font color="#FF0000"> <bean:message key="userinfo.disabled"/> </font> </logic:equal> </td> </tr> </logic:iterate></logic:notEmpty> 注意不是JSPlogic就不要再说了! smyl9989(真我的风采) ChDw(米)说的都对都要用CellRenderer类的,但是好象很难!哎! java打成jar包出现的问题 能否详细解释为什么打印的是A,而不是B 请教一个关于多线程的问题啊 好心人帮忙开一下错误!!! MyEclipse import无法导入类 请问如何精确控制纸长? 什么是JAV字节码增加技术? 有谁用过JFreeReport,为什么初始化会这么慢呢? 如何用javadoc生成一个包下的所有文件(包括子包)的帮助文件? %%%小菜,小菜,进来尝尝--jBuilder7里面为什么不能生成.jpr文件????%%% 用DecimalFormat类怎么让一个小数有且只保留两位小数? 关于起名的问题
private JPanel panel = null;
RendererList(JPanel panel) {
this.panel = panel;
this.panel.setBorder(BorderFactory.createCompoundBorder()); setOpaque(true);
} public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected,
boolean cellHashFocus) {
if (value != null) {
//这里处理
if (value.toString().equals("中国")) {
this.setBackground(new Color(210, 210, 210));
//setIcon(new ImageIcon(this.getClass().getResource(
//"images/add.gif")));
}
else if (value.toString().equals("美国")) {
this.setBackground(new Color(100, 110, 210));
}
}
if (isSelected) {
this.setBackground(new Color(20, 110, 210));
//this.panel.setBackground(new Color(20,110,20));
//this.panel.setForeground(new Color(80,110,20));
this.panel.setBorder(BorderFactory.createLineBorder(Color.black));
}
if (!isSelected) {
this.setBackground(new Color(255, 255, 255));
this.panel.setBackground(new Color(255, 255, 255));
this.panel.setBorder(BorderFactory.createEmptyBorder());
} return this.panel;
}
}
然后:this.list.setCellRenderer(new RendererList(this.panel));代码的意思是用panel模拟了list里面的每一条
out.println("<tr class='even'>");
}else{
out.println("<tr class='ood'bgcolor=eeeeee>");
}
i为行的变量 根据这个你可以稍做修改应该就可以了。
l.setCellRenderer(new DefaultListCellRenderer() {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if((index & 1) == 1)
comp.setBackground(Color.RED);
else
comp.setBackground(Color.BLACK);
return comp;
}
});
<logic:iterate id="result" name="你的list对象" type="bean类">
<tr height="18" >
<td nowrap="nowrap">
<logic:equal name="result" property="state" value="正常日志">
<bean:message key="userinfo.able"/>
</logic:equal>
<logic:equal name="result" property="state" value="错误日志">
<font color="#FF0000">
<bean:message key="userinfo.disabled"/>
</font>
</logic:equal> </td>
</tr>
</logic:iterate>
</logic:notEmpty>
logic就不要再说了!
ChDw(米)
说的都对都要用CellRenderer类的,但是好象很难!哎!