如何禁用鼠标单击jtable的最后一列?

时间:2014-05-07 13:36:26

标签: events jtable

我想确保只有鼠标或按钮才能点击jtable的最后一列,因为它只显示其他行的结果。

我尝试过使用iscellEditable但是鼠标仍然可以点击最后一列,因此会因鼠标事件而改变数据。

这是我的代码:

               table = new JTable(){
               @Override
               public boolean isCellEditable(int row, int column) {
                return false;
               }
              };
        table.setCellSelectionEnabled(true);
                table.getTableHeader().setReorderingAllowed(false);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                getContentPane().add(table);
                final DefaultTableModel tableModel = new DefaultTableModel(new Object[]{"Student Name","Student ID"},0);
                int q = table.getSelectedColumn();
                int r = table.getSelectedRow();
                table.setModel(tableModel);
        table.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                String click1 = (String) table.getValueAt(table.getSelectedRow(),table.getColumnCount()-1) ;
                int click2 = Integer.parseInt(click1);
                int q = table.getSelectedColumn();
                int r = table.getSelectedRow();
                Object p = table.getValueAt(r,q);
                String t = null;
                String  b = p.toString();

                switch (b) {
                case "1":  t = "L";

                       break;
                case "L":  t = "0";
                           click2++;
                       break;
                case "0":  t = "H"; 
                           click2--;
                       break;
                case "H":  t = "1"; 
                       break;
                default: t = b;
                break;
                }

                String click3 = Integer.toString(click2);

                tableModel.setValueAt(click3,r,table.getColumnCount()-1);
                tableModel.setValueAt(t,r,q);
            }
        });

1 个答案:

答案 0 :(得分:0)

如果点击的列是最后一列,您是否尝试过返回?

当你得到int q = table.getSelectedColumn();

然后添加if (q == 'last_column_id') { return;},其中'last_column_id'是列的ID。例如,如果有5列,则las的id为4,因此如果选择的列为4则返回。

您可以使用table.getColumnCount() - 1来获取此ID。