我正在使用JTable
+ JScrollPane
+ DefaultTableModel
。
我需要在JTableHeader
上实施Drag-n-Drop。我想将列标题拖到我的组件中,并根据拖动的列进行一些工作。
我在我的setTransferHandler()
上尝试了JTableHeader
,但拖延仍无效。
我从哪里开始?是否可以在JTableHeader
上实施DnD并保存“移动列”功能(JTable
中可用的“开箱即用”)?
答案 0 :(得分:3)
已解决:问题已结束。我用
实现了dndDragSource.getDefaultDragSource().createDefaultDragGestureRecognizer(tableHeader, ...)
有一点需要提及:dnd打破了默认的“重新排列”行为。我的解决方法是
public void dragGestureRecognized(DragGestureEvent dge) {
if (dge.getDragAction() == DnDConstants.ACTION_COPY)
return;
try {
dge.startDrag(null, new MyTransferable());
} catch (InvalidDnDOperationException e2) {
System.out.println(e2);
}
}
这样我就可以用ctrl-pressed重新排列列。这对我来说已经足够了。