如何设置Jtable中的行的背景颜色!!! 如和设置数据字体的颜色。
不同类型数据,背景颜色不一样,如类型1,本行颜色为红色,类型2本行颜色为绿色,类型3本行颜色为紫色等。给出代码好吗,能直接运行的最好了!!!1

解决方案 »

  1.   

    自己写一个TableCellRenderer。
    class TestTableCellRenderer extends DefaultTableCellRenderer{    /* (non-Javadoc)
         * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
         */
        public Component getTableCellRendererComponent(JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column) {
           JLabel label = (JLabel)super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
           
           //根据类型设置label的背景色,字体颜色。       return label;
        }}
      

  2.   

    /*
     * Created on 2006-5-17
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package psn;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;/**
     * @author James Woo 2006-5-17 17:51:17 @
     */
    public class Example {
    private String[] headers = new String[] { "name", "age", "gender" }; private Object[][] values = new Object[][] {
    { "james", new Integer(333), new Boolean(true) },
    { "woo", new Integer(333), new Boolean(true) } }; public Example() {
    DefaultTableModel tm = new DefaultTableModel(values, headers); JFrame f = new JFrame();
    f.setSize(600, 160);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JTable jt = new JTable(tm); jt.setDefaultRenderer(Object.class, new TableCellRenderer() { public Component getTableCellRendererComponent(JTable table,
    Object value, boolean isSelected, boolean hasFocus,
    int row, int column) {
    // TODO Auto-generated method stub
    JTextField text = new JTextField(value.toString());
    if (row == 0) { text.setBackground(Color.RED);
    text.setForeground(Color.BLACK);
    } else {
    text.setBackground(Color.BLUE);
    text.setForeground(Color.CYAN); } return text;
    } }); JScrollPane jsp = new JScrollPane(jt);
    f.getContentPane().add(jsp, BorderLayout.CENTER);
    f.setVisible(true);
    } public static void main(String[] args) {
    new Example();
    }
    }
      

  3.   

    請教大家:
    我想判斷JTable第五個column中,只要有欄位的值大於2,就將那個欄位的整行row背景變成黃色。 
    請問要用什麼方法作呢?謝謝!