本帖最后由 iv111 于 2009-08-17 13:52:14 编辑

解决方案 »

  1.   

    重新实现一个TableCellRenderer就可以了。给你做了一个,你可以参考一下,呵呵import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.FlowLayout;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;public class TableTest extends JFrame { private static final long serialVersionUID = 935242953629005162L;
    private JTable table = null; public TableTest() {
    setLayout(new BorderLayout());
    table = new JTable(new DefaultTableModel(20, 4) { private static final long serialVersionUID = 4248093736568819249L; public Object getValueAt(int rowIndex, int columnIndex) {
    return rowIndex + ":" + columnIndex;
    }
    });
    for (int i = 0; i < table.getColumnCount(); i++)
    table.getColumnModel().getColumn(i).setCellRenderer(
    new MyTableCellRenderer());
    this.add(table, BorderLayout.CENTER);
    } private class MyTableCellRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table,
    Object value, boolean isSelected, boolean hasFocus, int row,
    int column) {
    JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
    String data = value.toString();
    JLabel label1 = new JLabel(data.substring(0, data.length() - 1));
    label1.setForeground(Color.black);
    JLabel label2 = new JLabel(data.substring(data.length() - 1));
    label2.setForeground(Color.white);
    label2.setBackground(Color.black);
    label2.setOpaque(true);
    panel.add(label1);
    panel.add(label2);
    if(row % 2 == 0)
    panel.setBackground(Color.yellow);
    else
    panel.setBackground(Color.green);
    return panel;
    } } public static void main(String[] args) {
    JFrame frame = new TableTest();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setResizable(false);
    frame.setVisible(true);
    }
    }
      

  2.   

    呵呵,其实比你想象的还要简单一些JTable的单元格绘制为JLabel,并且设置JLabel背景这些是基础,就不说了,关键是JLabel的text,把这个设置为 <html><table><tr><td>12</td><td bgcolor='#000000'><font color='white'>7</font></color></td></tr></table></html> 你看看效果如何,应该能满足你的要求,高度这些再调整就行了
      

  3.   

    有可以修改的需求吗?没有没有的话,2L的方法就可行。如果可以修改的话,需要实现相应 CellRenderer 和 CellEditor