One solution is to remove the listener which is responsible for moving the InternalFrame
for(MouseListener listener : ((javax.swing.plaf.basic.BasicInternalFrameUI) this.internalFrame.getUI()).getNorthPane().getMouseListeners()){
((javax.swing.plaf.basic.BasicInternalFrameUI) this.internalFrame.getUI()).getNorthPane().removeMouseListener(listener);
}
or add the InternalFrame in a splitpane and set
internalFrame.setMaximum(true);
This will give a nonmovable InternalFrame