【问题标题】:transferhandler ignores drag eventtransferhandler 忽略拖动事件
【发布时间】:2013-04-25 12:30:29
【问题描述】:

我在 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
}

【问题讨论】:

  • 应该可以工作,你没有显示的代码可能有问题;-)

标签: java swing drag-and-drop jtable


【解决方案1】:

我记得在使用 JTree 时遇到了同样的问题,解决方案是在我的 TransferHandler 中实现 getSourceActions 并在其中定义传输操作。例如:

    @Override
    public int getSourceActions(JComponent comp) {
        return MOVE;
    }

【讨论】:

  • 不,dropMode 仅用于决定放置位置的视觉反馈,而不是拖放功能本身
  • 你说得对,我正在删除这个糟糕的答案。感谢您的评论
  • 我记得我遇到过类似的问题,但之前的答案不是解决方案,再次感谢您指出这一点
猜你喜欢
  • 2012-07-12
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多