Como redimensionar automaticamente o jframe de acordo com o conteúdo
-
20-09-2019 - |
Pergunta
Eu criei um costume JPanel
que exibe imagens (vamos chamá -lo MyPanel
), Eu adicionei isso para JFrame
ContentPane.
Eu quero JFrame
para ser redimensionado automaticamente para ajustar o MyPanel
Quando a imagem muda.
Parece que preciso ligar frame.pack()
para fazer isso. Chamando pack()
a partir de MyPanel
Aumenta o acoplamento, então não quero fazer isso.
Para resolver o problema que estendei JFrame
(vamos chamá -lo MyFrame
) e feito MyFrame
observador, e MyPanel
observável. Sempre que a imagem MyPanel
está exibindo mudanças, notifica os ouvintes, MyFrame
Para esta instância. E depois MyFrame
chamadas pack()
quando recebe a notificação.
Existe uma maneira mais suave de redimensionar JFrame
De acordo com seu conteúdo?
Solução
A solução que você descreveu parece razoável.
Como alternativa, sempre que o MyPanel altera sua imagem, ele pode encontrar seu quadro pai e depois ligar para o pacote (). Se não existir esse quadro, não faça nada. Não há necessidade de criar classes adicionais, e é tão solto um acoplamento quanto você receberá. Você pode usar Swingutilities.getancestorofclass () para fazer isso facilmente.