Originariamente inviato da andbin
La prima differenza più evidente è che JFrame è una finestra "top-level" (non lo metti
dentro qualcosa!) mentre JDesktopPane è un normale componente che
devi mettere dentro un contenitore (es. JPanel o altro).
La seconda differenza è che JDesktopPane estende JLayeredPane la cui API consente di gestire correttamente la "sovrapposizione" su diversi livelli dei vari JInternalFrame. In pratica aggiunge la nozione di Z-order. Cosa che invece JFrame non offre affatto!
Ripeto che settare un sfondo di un componente o di una finestra non si riduce alla invocazione di un setQualcosa() ... che appunto
non esiste. Non è una funzionalità standard!
Detto in generale si deve estendere il componente, conoscere bene come funziona il painting in Swing (e ci sono guide/tutorial in rete per questo) e a quel punto fare l'override del giusto metodo nel modo giusto .... e disegnare!
Un JInternalFrame non si è obbligati a metterlo per forza dentro un JDesktopPane ..... dopotutto JInternalFrame è un JComponent, quindi tecnicamente lo si può mettere in qualunque posto dove si può mettere un componente Swing.
Ma anche se metti un JInternalFrame dentro es. un JPanel o il content-pane di un JFrame .... esso non "perde" la funzionalità di dragging. Ovvero può ancora muoverlo. E per impedire questo ... credo che non sia banale e probabilmente nemmeno furbo/pratico ....
Insomma: JInternalFrame (con JDesktopPane) è nato per poter realizzare applicazioni MDI dove generalmente ci sono un numero arbitrario di finestre interne trascinabili ed eventualmente iconizzabili, massimizzabili, ecc... dall'utente.
Se non è questo che vuoi fare .... cambia design. Se uno vede un JInternalFrame con il suo bordino, la sua barretta del titolo, ecc... vorrebbe poterla anche muovere. Ma se tu vuoi impedirlo ... stai stravolgendo tutto!
Hai un certo numero fisso di "contenuti" (detto in generale) che vuoi visualizzare in diverse aree altrettanto fisse e non spostabili?? Usa dei pannelli ... una griglia di pannelli per la precisione. Non so .... fai tu ma almeno fai le cose in modo pulito e logico.
Beh ... dipende da cosa hai fatto! Posta il codice.