java - 拖放 JTableHeader

标签 java swing jtable drag-and-drop jtableheader

我正在使用 JTable + JScrollPane + DefaultTableModel

我需要在 JTableHeader 上实现 Drag-n-Drop。我想将一个列标题拖到我的组件中,并根据拖动的列做一些工作。

我已经在我的 JTableHeader 上尝试了 setTransferHandler(),但拖动仍然无效。

我可以从哪里开始?是否可以在 JTableHeader 上实现 DnD 并保存“移动列”功能(在 JTable 中“开箱即用”)?

最佳答案

已解决:问题已关闭。我已经使用

实现了 dnd
DragSource.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/

相关文章:

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

java - 在 Scala/Java 中使用 AtomicBoolean 进行数据库锁定安全吗?

java - 使用ANTLR4获得完整的功能内容与C语言的空间

java - Weblogic 服务器 Guava NoSuchMethodError

java - 在 ImagePanel 上绘制形状

java - 如何在 Swing 中检查谁提交了 repaint() 事件?

java - 将 JTextField 扩展到 InputStream 并从 Button 执行操作

java - 如何将 JTable 添加到从 JScrollPane 扩展的类中?

java - 如何使 JScrollPane 适合我的 jTable?

java - 使用 JTable rowFilter 突出显示行