我在jTable的第一列里用new Boolean(false)建了一列复选框,判断哪一个被选中时可以用:
for (int i = 0; i < model.getRowCount(); i++)
{
if (model.getValueAt(i, 0).equals(new Boolean(true)))
                                {
                                          
                                 }
          }
但是如果想判断全部没被选中时输出一个信息,怎么判断?

解决方案 »

  1.   

    加一个标识呗,如果有选中将标识位置为true,最后判断标识的值
      

  2.   

    具体说下怎么写,就是我上面的那段代码,其中model是我jTable的DefaultTableModel,我想当有复选框被选中时,将它们的值取出,作为另一个表格的行向量,因为另一个表格需要操作moveColumn,所以当复选框全部没被选中时,会报index out of range错误,我现在的处理是在moveColumn时catch Exception 来show JOptionPane,但是最好是在前面取复选框时就进行判断~大大帮写下~
      

  3.   

    那,我就偷懒了,两个帖子的问题我就放一个demo里面搞了。代码写得乱了一点,你那个问题我改过 了,按照id区分。这个问题很简单,设置一个变量,整形的就可以了。到时候你看它和你的数据列表的size是否相等,相等就是铨选了,这个变量为0就是一个都没选。其他的我不罗嗦了。接代码~~package table.test;import java.awt.BorderLayout;
    import java.awt.Container;
    import java.util.HashMap;
    import java.util.Vector;import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;public class ExchangeDemo extends JFrame {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    private static final Vector<String> COLUMN_NAMES = new Vector<String>(); private int iCount = 0;
    // 用来存储id和行的对应关系,看着方便一点
    private HashMap<String, Integer> idToRowMap = new HashMap<String, Integer>(); public ExchangeDemo() {
    super();
    initData();
    Container c = getContentPane();
    final JTable table = new JTable();
    table.setModel(new DefaultTableModel(data, COLUMN_NAMES) { @Override
    public void setValueAt(Object value, int row, int column) { if (column == 0) {
    int iValue;
    try {
    iValue = Integer.parseInt(value.toString());
    } catch (Exception e) {
    // TODO: 这地方的判断小子自己做吧
    e.printStackTrace();
    return;
    } if (iValue - 1 >= data.size()) {
    // 这地方通常好的软件有一些比较强的处理,我就先拿这个顶了
    JOptionPane.showMessageDialog(table, "error");
    return;
    }
    if (row < data.size() && column < COLUMN_NAMES.size()) { Object oldValue = data.get(row).get(column); data.get(row).set(column,
    value == null ? "" : value.toString());
    data.get(idToRowMap.get(String.valueOf(iValue))).set(
    column, oldValue);
    //
    Integer row1 = idToRowMap.get(value);
    Integer row2 = idToRowMap.get(String.valueOf(iValue));
    idToRowMap.put(value.toString(), row2);
    idToRowMap.put(String.valueOf(iValue - 1), row1);
    fireTableDataChanged();
    }
    } else if (column == 3) {
    Boolean b = (Boolean) value;
    iCount += b ? 1 : -1;
    JOptionPane.showMessageDialog(table, "选中个数:" + iCount);
    super.setValueAt(value, row, column); } else { super.setValueAt(value, row, column);
    }
    } //
    @Override
    public Class<?> getColumnClass(int columnIndex) {
    return data.get(0).get(columnIndex).getClass();
    }
    });
    c.setLayout(new BorderLayout());
    c.add(new JScrollPane(table));
    setSize(600, 400);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
    } private void initData() {
    for (int i = 0; i < 4; i++) {
    COLUMN_NAMES.add("column" + (i + 1));
    }
    for (int i = 0; i < 20; i++) {
    Vector<Object> record = new Vector<Object>();
    String id = String.valueOf(i + 1);
    record.add(id);
    record.add("aa");
    record.add("bb");
    record.add(new Boolean(false));
    data.add(record);
    idToRowMap.put(id, new Integer(i));
    }
    } public static void main(String args[]) {
    new ExchangeDemo();
    }
    }