private void setupDragMode(JComponent f) { JDesktopPane p = getDesktopPane(f); Container parent = f.getParent(); dragMode = DEFAULT_DRAG_MODE; if (p != null) { String mode = (String) p.getClientProperty("JDesktopPane.dragMode"); Window window = SwingUtilities.getWindowAncestor(f); if (window != null && !AWTUtilities.isWindowOpaque(window)) { dragMode = DEFAULT_DRAG_MODE; } else if (mode != null && mode.equals("outline")) { dragMode = OUTLINE_DRAG_MODE; } else if (mode != null && mode.equals("faster") && f instanceof JInternalFrame && ((JInternalFrame) f).isOpaque() && (parent == null || parent.isOpaque())) { dragMode = FASTER_DRAG_MODE; } else { if (p.getDragMode() == JDesktopPane.OUTLINE_DRAG_MODE) { dragMode = OUTLINE_DRAG_MODE; } else if (p.getDragMode() == JDesktopPane.LIVE_DRAG_MODE && f instanceof JInternalFrame && ((JInternalFrame) f).isOpaque()) { dragMode = FASTER_DRAG_MODE; } else { dragMode = DEFAULT_DRAG_MODE; } } } }