import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.awt.Dimension;public class TableRenderDemo extends JPanel {
    private boolean DEBUG = false;
    JTable table;    public TableRenderDemo() {
        MyTableModel myTableModel = new MyTableModel();
        table = new JTable(myTableModel);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
        JScrollPane scrollPane = new JScrollPane(table);
        add(scrollPane);
    }
    class MyTableModel extends AbstractTableModel {
        private String[] columnNames = {"First Name",
                                        "Last Name",
                                        "Sport",
                                        "# of Years",
                                        "Vegetarian"};
        private Object[][] data = {
            {"Mary", "Campione",
             "Snowboarding", new Integer(5), new Boolean(false)},
            {"Alison", "Huml",
             "Rowing", new Integer(3), new Boolean(true)},
            {"Kathy", "Walrath",
             "Knitting", new Integer(2), new Boolean(false)},
            {"Sharon", "Zakhour",
             "Speed reading", new Integer(20), new Boolean(true)},
            {"Philip", "Milne",
             "Pool", new Integer(10), new Boolean(false)}
        };        public final Object[] longValues = {"Sharon", "Campione",
                                            "None of the above",
                                            new Integer(20), Boolean.TRUE};
        public int getColumnCount() {
            return columnNames.length;
        }        public int getRowCount() {
            return data.length;
        }        public String getColumnName(int col) {
            return columnNames[col];
        }        public Object getValueAt(int row, int col) {
            return data[row][col];
        }        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }        public boolean isCellEditable(int row, int col) {
            if (col < 2) {
                return false;
            } else {
                return true;
            }
        }        public void setValueAt(Object value, int row, int col) {
            data[row][col] = value;        }
    }
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("TableRenderDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        TableRenderDemo newContentPane = new TableRenderDemo();
        //newContentPane.setOpaque(true);
        frame.setContentPane(newContentPane);
        frame.pack();
        frame.setVisible(true);
    }    public static void main(String[] args) {
        createAndShowGUI();
    }
}
执行代码后:很不理解表格中最右侧的复选框是怎样生成的,代码如何实现的,它的值是如何取到的呢???
高手帮忙,请给详细解释一下

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【lumingvy】截止到2008-07-24 17:01:04的历史汇总数据(不包括此帖):
    发帖的总数量:36                       发帖的总分数:680                      每贴平均分数:18                       
    回帖的总数量:50                       得分贴总数量:7                        回帖的得分率:14%                      
    结贴的总数量:34                       结贴的总分数:640                      
    无满意结贴数:2                        无满意结贴分:40                       
    未结的帖子数:2                        未结的总分数:40                       
    结贴的百分比:94.44 %               结分的百分比:94.12 %                  
    无满意结贴率:5.88  %               无满意结分率:6.25  %                  
    值得尊敬
      

  2.   

    改rendererstatic class BooleanRenderer extends JCheckBox implements TableCellRenderer, UIResource
        {
            private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); public BooleanRenderer() {
        super();
        setHorizontalAlignment(JLabel.CENTER);
                setBorderPainted(true);
    }        public Component getTableCellRendererComponent(JTable table, Object value,
           boolean isSelected, boolean hasFocus, int row, int column) {
        if (isSelected) {
            setForeground(table.getSelectionForeground());
            super.setBackground(table.getSelectionBackground());
        }
        else {
            setForeground(table.getForeground());
            setBackground(table.getBackground());
        }
                setSelected((value != null && ((Boolean)value).booleanValue()));            if (hasFocus) {
                    setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
                } else {
                    setBorder(noFocusBorder);
                }            return this;
            }
        }