public void mouseDragged(CardPanel dragPanel, int dragOffsetX, int dragOffsetY, MouseEvent evt) {
        super.mouseDragged(dragPanel, dragOffsetX, dragOffsetY, evt);

        int mouseX = evt.getX();
        int mouseY = evt.getY();
        int dragPanelX = mouseX + dragOffsetX;
        int dragPanelY = mouseY + dragOffsetY;
        Point p = SwingUtilities.convertPoint(this, dragPanelX, dragPanelY, CardPanel.dragAnimationPanel.getParent());
        CardPanel.dragAnimationPanel.setLocation(p.x, p.y);

        CardPanel panel = getCardPanel(mouseX, mouseY);
        if (panel == null || panel == dragPanel) return;
        int index = cardPanels.size();
        while (--index >= 0)
            if (cardPanels.get(index) == panel) break;
        cardPanels.remove(dragPanel);
        cardPanels.add(index, dragPanel);
        mouseDragStartX = panel.getCardX();
        mouseDragStartY = panel.getCardY();
        revalidate();
    }