问题如下,希望高手帮忙:
有一个表,有4列若干行数据,现想显示这些数据为一个jtable,每行前面加一个单选按钮,用来选择这个表中的某一行,
保存的时候,判断单选哪个被选中,取得选中行的4列数据,保存在另一个表里,该怎么实现呢

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;/**
     * <p>Title: 表格勾选框编辑器</p>
     * <p>Description: 字符串为"0"和"1"值用JCheckBoxEditor编辑</p>
     */public class BooleanCellEditor extends AbstractCellEditor implements
      TableCellEditor, ActionListener
    {
      /** 是否选中 */
      JCheckBox boxSfxz = null;
      public BooleanCellEditor()
      {
        boxSfxz = new JCheckBox();
        boxSfxz.setHorizontalAlignment(JCheckBox.CENTER);
        boxSfxz.addActionListener(this);
      }  public BooleanCellEditor(ActionListener l)
      {
        boxSfxz = new JCheckBox();
        boxSfxz.setHorizontalAlignment(JCheckBox.CENTER);
        boxSfxz.addActionListener(l);
      }  /** 获取编辑框的值 */
      public Object getCellEditorValue()
      {
        return boxSfxz.isSelected() ? "1" : "0";
      }  /** 选中和取消选中时的动作 */
      public void actionPerformed(ActionEvent e)
      {}  /** 选中修改时返回的编辑器 */
      public Component getTableCellEditorComponent(JTable table,
                                                   Object value,
                                                   boolean isSelected,
                                                   int row,
                                                   int column)
      {
        /** 设置初始值 */
        if (value.equals("1"))
        {
          boxSfxz.setSelected(true);
        }
        else if (value.equals("0")||value.equals(""))
        {
          boxSfxz.setSelected(false);
        }
        return boxSfxz;
      }
    }
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;/**
     * <p>Title: 表格勾选框绘制器</p>
     * <p>Description: 字符串为"0"和"1"值用JCheckBoxRenderer绘制</p>
     */public class BooleanCellRenderer extends JCheckBox implements TableCellRenderer
    {
      public BooleanCellRenderer()
      {
        super();
        setHorizontalAlignment(JCheckBox.CENTER);
        setOpaque(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());
        }
        if (value.equals("0")||value.equals(""))
        {
          this.setSelected(false);
        }
        else if (value.equals("1"))
        {
          this.setSelected(true);
        }
        return this;
      }
    }    /** CheckBox Editor */
        table.getColumnModel().getColumn(10).setCellEditor(
            new BooleanCellEditor()
        );
        /** CheckBox Renderer */
        table.getColumnModel().getColumn(10).setCellRenderer(
            new BooleanCellRenderer()
        );//判断是否被选中即判断table该单元格值为0还是1
      

  2.   

    自己改写列的editor和renderer
    注意对象的使用,一列最好使用一个editor和renderer