我正在使用 JTable
+ JScrollPane
+ DefaultTableModel
。
我需要在 JTableHeader
上实现 Drag-n-Drop。我想将一个列标题拖到我的组件中,并根据拖动的列做一些工作。
我已经在我的 JTableHeader
上尝试了 setTransferHandler()
,但拖动仍然无效。
我可以从哪里开始?是否可以在 JTableHeader
上实现 DnD 并保存“移动列”功能(在 JTable
中“开箱即用”)?
最佳答案
已解决:问题已关闭。我已经使用
实现了 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 的同时重新排列列。这对我来说已经足够了。
关于java - 拖放 JTableHeader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12489395/