自定义一个CellRender,实现TableCellRenderer接口,在
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) 
这个方法里面修改。
试试可以不?

解决方案 »

  1.   

    给点具体的代码看看,我用jTable.getCellRenderer(0, 0).getTableCellRendererComponent(jTable, ui, true, true, 0, 0).setVisible(false)好像不行
      

  2.   

    //.............
    TableColumnModel tcm=table.getColumnModel();
    TableColumn tc=tcm.getColumn("gender");//这一列就是复选框列
    tc.setCellRenderer(new MyCellRender());
    //...........................
    //MyCellRender.java:
    import java.awt.Component;
    import javax.swing.JCheckBox;
    import javax.swing.JTable;
    import javax.swing.table.TableCellRenderer;
    public class MyCellRender extends JCheckBox implements TableCellRenderer{
    public MyCellRender(){
    super();
    this.setSelected(false);
    }
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column) {
    if(row==table.getRowCount()-1){
    return null;
    }
    return this;
    }
    }
      

  3.   

    继承DefaultTableModel,重写getColumnCount()方法,返回除不需要使用的列之外的列数。
      

  4.   

    java.lang.ClassCastException: javax.swing.plaf.basic.BasicPanelUI cannot be cast to java.lang.Boolean
            at javax.swing.JTable$BooleanRenderer.getTableCellRendererComponent(JTable.java:5406)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
            at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
            at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
            at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
            at java.awt.Component.processMouseEvent(Component.java:6263)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
            at java.awt.Component.processEvent(Component.java:6028)
            at java.awt.Container.processEvent(Container.java:2041)
            at java.awt.Component.dispatchEventImpl(Component.java:4630)
            at java.awt.Container.dispatchEventImpl(Container.java:2099)
            at java.awt.Component.dispatchEvent(Component.java:4460)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
            at java.awt.Container.dispatchEventImpl(Container.java:2085)
            at java.awt.Window.dispatchEventImpl(Window.java:2475)
            at java.awt.Component.dispatchEvent(Component.java:4460)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
      

  5.   

    但是我并不是最后一列全部不要,最后一列其实是求平均值,只是那个Boolean的column不需要求
      

  6.   

    刚才把tableModel的
        @Override
        public Class<?> getColumnClass(int columnIndex) {        return getValueAt(0, columnIndex).getClass();
        }住了没有exception,但是问题又来了,复选框是显示出来了,最后一行也没了,但是怎么也选不中,而且双击下会变成字符串true,
      

  7.   

    加一个CellEditor试试:
    TableColumn tc=tcm.getColumn("gender");//这一列就是复选框列
    tc.setCellRenderer(new MyCellRender());tc.setCellEditor(new DefaultCellEditor(new JCheckBox()));
      

  8.   


    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column) {
    if(row==table.getRowCount()-1){
    return null;
    }
    boolean isChecked=(((Boolean)value).booleanValue());
    setSelected(isChecked);
    return this;
    }
      

  9.   

    ok了,LS详细解释下代码吧,顺便加个如何居中显示,现在都是靠左显示了