我有一个可以删除组件的JTable。其中一些组件只能作为表中的插入项删除(因此不会在已存在的单元格中删除)。
我的问题是如何禁止丢弃这些组件的细胞。我试过像:
JTable table = new JTable();
table.setDropMode(DropMode.ON_OR_INSERT_COLS);
table.setTransferHandler(new ExampleTransferHandler());
boolean onlyColumnInsert = true;
private class ExampleTransferHandler extends TransferHandler{
public boolean canImport(TransferSupport support){
if(onlyColumnInsert){
return table.getDropLocation().isInsertColumn();
}else{
return true;
}
}
}
但这不起作用,因为isInsertColumn()仅在删除完成后设置。有没有其他方法可以检测drop是否会导致TransferHandler中canImport()方法的列插入?
谢谢!
答案 0 :(得分:0)
通过将TransferSupport传递的DropLocation转换为JTable.DropLocation,我找到了解决此问题的方法:
private class ExampleTransferHandler extends TransferHandler{
public boolean canImport(TransferSupport support){
if(onlyColumnInsert){
return ((JTable.DropLocation)support.getDropLocation()).isInsertColumn();
}else{
return true;
}
}
}