Java:DropTarget:Forward Transferable到JTable里面

时间:2013-06-28 19:56:23

标签: java swing jtable jpanel drag-and-drop

我通过设置JTable来启用TransferHandler的Drag'n'Drop工具。现在我可以添加项目并在此表中重新排序。为了更方便地从其他位置添加项目(比如说桌面桌面),我还将DropTarget设置为JPanel,其中包含表格和其他一些组件。此DropTarget只是将Transferable转发到表格的TransferHandler,后者会在列表末尾添加该项目:

panel.setDropTarget(new DropTarget(table, new DropTargetAdapter(){
    @Override
    public void drop(DropTargetDropEvent dtde){
        TransferSupport transferSupport = new TransferHandler.TransferSupport(table, dtde.getTransferable());
        table.getTransferHandler().importData(transferSupport);
    }
}));

我已经实例化了其中4个面板,因此我可以从外部添加项目并将它们从一个面板移动到另一个面板。

除了事实之外,它对我有用,它始终执行COPY,而不是MOVE。如果我向DropTargetDropEvent询问带有getDropAction()的DropAction,则会抛出“Not a Drop”异常。 (奇怪:为什么DropTargetDropEvent不存在下降?)

当我直接放入表格主体时,也实现了exportDone()并且工作正常。当在droplalay面板上删除时,也会调用exportDone(),但是使用SourceAction == NONE(int 0)。

我做错了什么?放下我的一个面板时,执行正确(COPY或MOVE)动作的正确方法是什么?

0 个答案:

没有答案