我写了个List,里面放的是日志。在界面上给可户看。
但是想把错误的日志和正常日志,区分开。想错误日志显示红色,正常的就是黑色。
但是List好象不支持!
只能设置整个List的字体和颜色。
list.setForeground();谁知道怎么做啊!

解决方案 »

  1. 可以实现,代码如下: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里面的每一条
      

  2. if(i%2==0) {
    out.println("<tr class='even'>");
    }else{
    out.println("<tr class='ood'bgcolor=eeeeee>");
    }
    i为行的变量 根据这个你可以稍做修改应该就可以了。
      

  3. 你自己继承一个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;
    }
    });
      

  4. 这个不要在List中实现,你可以用logic标签来实现
      

  5. <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>
      

  6. 注意不是JSP
    logic就不要再说了!
      

  7. smyl9989(真我的风采) 
    ChDw(米)
    说的都对都要用CellRenderer类的,但是好象很难!哎!
      

类似问题 »