2013-02-07 123 views
2

我正在试图制作一个显示用户列表的jtable。该表应允许用户选择整行但不允许编辑单元格。Java jtable允许行选择

到目前为止,我有这个,它阻止他们编辑单元格,但如何让他们选择行而不是单元格?

DefaultTableModel userTableModel = new DefaultTableModel(new Object[]{"Customer ID", "First Name", "Last Name"}, 0) { 
    @Override 
    public boolean isCellEditable(int row, int column) { 
     return false; 
    } 
}; 

这个我显示我正在填充表:

public void refreshCustomersList() throws SQLException, ClassNotFoundException { 

    UserBeanList userList = dbConnector.getUserData(); 

    for (int i = 0; i < userList.size(); i++) { 
     UserBean userBean = userList.getUserBeanAt(i); 

     String[] data = new String[3]; 

     data[0] = userBean.getCustomerID(); 
     data[1] = userBean.getFirstName(); 
     data[2] = userBean.getLastName(); 

     userTableModel.addRow(data); 

    } 
    tableCustomers.setModel(userTableModel); 
} 

正如我所说的,我有残疾细胞的编辑,但我怎么只允许行选择。

我看到其他人的帖子说我应该把这个,但我不知道要把它。

selectionTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

任何帮助将是伟大的。

回答

1
private void jTable1MousePressed(java.awt.event.MouseEvent evt) {          

int selectedRow; 

ListSelectionModel rowSM = jTable1.getSelectionModel(); 

    rowSM.addListSelectionListener(new ListSelectionListener() 
    { 
    @Override 
    public void valueChanged(ListSelectionEvent e) 
    { 
     ListSelectionModel lsm = (ListSelectionModel) e.getSource(); 

     selectedRow = lsm.getMinSelectionIndex(); 

     int numCols = jTable1.getColumnCount(); 

     model = (DefaultTableModel) jTable1.getModel(); 

     System.out.print(" \n row " + selectedRow + ":"); 

     for (int j = 0; j < numCols; j++) 
     { 
      System.out.print(" " + model.getValueAt(selectedRow, j)); 
     } 

    } 
}); 
} 

使用这个你可以得到你点击特定行的整行的值。