我在JTable上设置了一个传输处理程序(嵌入在JPanel + JScrollPane中)。 从其他地方的表中拖动元素(创建可转移的...)是有效的。 将元素拖放到表格不起作用,忽略任何拖动事件。 问题可能是事件消费者(消费拖拽事件),但这是我唯一的想法。
final JTable tbl = new MyJTable();
tbl.setDragEnabled(true);
tbl.setTransferHandler(new TransferHandler() {
@Override
protected Transferable createTransferable(JComponent comp) {
// .... works
}
@Override
public boolean canImport(TransferSupport support) {
// ... never called
}
@Override
public boolean importData(TransferSupport support) {
// ... never called
}
答案 0 :(得分:0)
我记得在使用JTree时遇到了同样的问题,解决方案是在getSourceActions
中实现TransferHandler
并在其中定义传输操作。例如:
@Override
public int getSourceActions(JComponent comp) {
return MOVE;
}