nikketta ha scritto:
dunque è possibile permettere all'utente di gestire il posizionamento del JPannel con il mouse?
Se vuoi realizzare una interfaccia di quelle che vengono definite MDI (Multiple-Document Interface), dovresti usare JDesktopPane e JInternalFrame. Vedi il tutorial ufficiale:
How to Use Internal Frames
In questo scenario il ridimensionamento/spostamento dei frame interni è già gestito in automatico e di serie, non devi fare nulla di particolare per gestirlo.
Se seguirai questa strada, leggi bene il tutorial, che spiega anche la sequenza di metodi da usare per creare e visualizzare correttamente i frame interni.
Se invece vuoi trascinare dei JPanel che sono dentro un qualunque contenitore, allora le cose vanno diversamente e devi scrivere un po' di codice in più. Innanzitutto i pannelli devono stare dentro un "contenitore" senza layout manager ( contenitore.setLayout(null); per intenderci).
Questo contenitore potrebbe essere il content-pane del JFrame o un pannello apposito messo a sua volta nel content-pane in CENTER del suo BorderLayout. Non ha importanza ... nel senso che cambia poco/nulla. I pannelli contenuti nel contenitore poi andranno inizialmente posizionati e dimensionati esplicitamente (setBounds oppure setLocation+setSize).
Poi devi registrare un MouseListener e un MouseMotionListener su ciascun pannello che vuoi muovere. Al
mousePressed prendi la posizione del mouse e la tieni da qualche parte. Al
mouseDragged, prendi la posizione del mouse, fai la differenza con la posizione salvata ed hai uno spostamento relativo, che devi applicare al pannello, quindi salvi la posizione corrente. Al successivo mouseDragged idem e vai avanti così ragionando per spostamenti relativi.
Valuta le due opzioni, se hai dubbi, chiedi pure.