我想确保只有鼠标或按钮才能点击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);
}
});
答案 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。