【问题标题】:Java jtable allow row selectionJava jtable允许行选择
【发布时间】:2013-02-07 09:51:49
【问题描述】:

我正在尝试制作一个显示用户列表的 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);

任何帮助都会很棒。

【问题讨论】:

    标签: java swing jtable


    【解决方案1】:

    您是否在 JTable 实例上尝试过 setRowSelectionAllowed(true)

    我建议尝试查看 javadocs http://docs.oracle.com/javase/6/docs/api/javax/swing/JTable.html#setRowSelectionAllowed(boolean)

    并阅读从 javadocs 链接的教程:http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

    他们非常彻底:)

    【讨论】:

      【解决方案2】:
      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));
              }
      
          }
      });
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-18
        • 2023-03-24
        • 1970-01-01
        • 2018-10-30
        • 2023-03-24
        • 1970-01-01
        • 2011-07-26
        • 2012-03-16
        相关资源
        最近更新 更多