在一个 JTable 中放入 JCheckBox, 并且其中一行什么都不放,为空行
上面我已经做到了.
现在的问题是:上面任何行的 JCheckBox 只要有一个选择上,那另外的就自动为不选状态, 这是为什么啊.项目紧急,分不够再加,请高手指点!!!在线等待

解决方案 »

  1.   

    估计是你setValue时根本没保存数据,或者根本就没有实现setValue。最好代码贴出来,大家分析一下。
      

  2.   

    public class EditTableTest extends JDialog{

    private final String[] title = { "", "module", "Clause ID", "Clause Name" };

    protected JTable table;
    private DefaultTableModel model; public EditTableTest() { super(new Frame(), "Table", true); initComponents();
    }

    public void initComponents()
    {
    JScrollPane scrollPane = new JScrollPane();
    table = new JTable();
    model = new DefaultTableModel();

    table.setModel(model);
    scrollPane.setViewportView(table);

    for (int c = 0; c < title.length; ++c) {
    model.addColumn(title[c]);
    }

    initData();

    table.getColumnModel().getColumn(0).setCellRenderer(new CellRenderer()); getContentPane().add(scrollPane, java.awt.BorderLayout.CENTER); setSize(500, 400); setPosition();
    }

    public void initData()
    {
    for (int i=0; i<10; i++){

    if (i == 6){
    model.addRow(new Object[] { null, "", "", ""});
    continue;
    }

    model.addRow(new Object[] {Boolean.TRUE, "clause Name", "clause ID", "clause"});

    }
    }

    public static void main(String args[]) {
    new EditTableTest().show();
    }

    class CellRenderer extends TableCellRendererCheckBox {
    public Component getTableCellRendererComponent(
    JTable table,
    Object obj,
    boolean isSelected,
    boolean hasFocus,
    int row,
    int column) {

    super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);

    if (row == 6 && column == 0)
    return new JLabel();

    if(isSelected){
    setForeground(table.getSelectionForeground());
    setBackground(table.getSelectionBackground());
    setSelected(true);
    }else{
    setForeground(table.getForeground());
    setBackground(table.getBackground());
    setSelected(false);
    }

    return this;
    }
    }
    }
    ////////////////////////////
    public class TableCellRendererCheckBox
    extends JCheckBox
    implements TableCellRenderer { /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox() {
    super();
    } /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox(Icon arg0) {
    super(arg0);
    } /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox(Icon arg0, boolean arg1) {
    super(arg0, arg1);
    } /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox(String arg0) {
    super(arg0);
    } /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox(Action arg0) {
    super(arg0);
    } /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox(String arg0, boolean arg1) {
    super(arg0, arg1);
    } /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox(String arg0, Icon arg1) {
    super(arg0, arg1);
    } /**
     * Constructor for CheckBoxTableCellRender
     */
    public TableCellRendererCheckBox(String arg0, Icon arg1, boolean arg2) {
    super(arg0, arg1, arg2);
    }为什么只要有一个选择上,那另外的就自动为不选状态
      

  3.   

    你没有设置celleditor而且没有在tablemodel的setvalue中实现修改值