Java 是否可以禁用JTable中特定单元格的拖放功能?

Java 是否可以禁用JTable中特定单元格的拖放功能?,java,swing,drag-and-drop,jtable,Java,Swing,Drag And Drop,Jtable,我正在尝试在Jtable中拖放单元格。它可以工作,但现在我想知道是否可以仅对第一个单元格禁用拖放功能,例如,因为我不希望修改此单元格 这是密码 public class Test extends JFrame { public Test() { setSize(500, 200); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel pan = n

我正在尝试在Jtable中拖放单元格。它可以工作,但现在我想知道是否可以仅对第一个单元格禁用拖放功能,例如,因为我不希望修改此单元格

这是密码

public class Test extends JFrame {
public Test() {
    setSize(500, 200);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel pan = new JPanel();
    pan.setLayout(new GridLayout(1, 1, 5, 5));

    Object[][] data = new Object[][] { { "00", "10", null }, { "01", "11", null }, { "02", "20", null } };
    String[] name = new String[] { "a", "b", "c" };
    DefaultTableModel model = new DefaultTableModel(data, name);
    JTable jt = new JTable(model);
    pan.add(jt);

    jt.setRowHeight(24);
    jt.setRowSelectionAllowed(false);

    jt.setFillsViewportHeight(true);
    jt.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    jt.setDragEnabled(true);
    jt.setDropMode(DropMode.USE_SELECTION);
    jt.setTransferHandler(new MyTransferHandlerT());

    setContentPane(pan);
    setVisible(true);
}

public static void main(String[] args) {
    new Test();
}
}
以及TransferHandler的代码

谢谢

model.setValueAt(data, row, col);
//model.fireTableStructureChanged();
不要直接调用fireTableStructureChanged方法。这是TableModel的责任

是否可以仅对第一个单元格禁用拖放


请参见上的Swing教程中的部分。它有一个示例,将禁用第一列上的drop。

我不确定,但当不应拖动单元格时,您可以尝试在方法createTransferableJComponent中返回null。我尝试在createTransferable中添加以下内容:if model.getValueAt0,0==00{return null},但它不起作用。请你能告诉我你会怎么做吗?是的,谢谢这是用于禁用拖放的工作,但不是用于拖动。因此,我们必须编写一些额外的代码。
model.setValueAt(data, row, col);
//model.fireTableStructureChanged();