Domanda

Ho creato un JPanel personalizzato che visualizza le immagini (permette di chiamare MyPanel), ho aggiunto questo per contentPane di JFrame.

Voglio JFrame ad essere ridimensionato automaticamente per adattarsi al MyPanel quando l'immagine cambia.

Sembra che ho bisogno di chiamare frame.pack() per fare questo. Chiamata pack() da MyPanel aumenta di accoppiamento in modo da non voglio farlo.

Per risolvere il problema ho esteso JFrame (consente di chiamare MyFrame) e reso osservatore MyFrame e MyPanel osservabile. Ogni volta che il MyPanel immagine è la visualizzazione cambiamenti che notifica gli ascoltatori, MyFrame per questa istanza. E poi MyFrame chiama pack() quando arriva la notifica.

C'è un modo più agevole di ridimensionamento JFrame in base al suo contenuto?

È stato utile?

Soluzione

La soluzione che hai descritto sembra ragionevole.

In alternativa, ogni volta che MyPanel cambia la sua immagine, si può andare a trovare il suo frame principale e quindi chiamare pack () su di esso. Se non esiste un tale cornice, allora non fare nulla. Non c'è bisogno di creare classi addizionali, e il suo come un accoppiamento sciolto, come si sta per arrivare. È possibile utilizzare SwingUtilities.getAncestorOfClass () per farlo facilmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top