Java JTable 允许行选择

3

我正在尝试创建一个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);

任何帮助都将是极好的。
2个回答

7

0
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));
        }

    }
});
}

使用此功能,您可以在单击特定行时获取整行的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接