如何根据内容自动调整JFrame大小

19
我创建了一个自定义的JPanel,用于显示图像(我们称之为MyPanel),我已将其添加到JFrame的contentPane中。
当图像更改时,我希望JFrame能够自动调整大小以适应MyPanel
看起来我需要调用frame.pack()来完成这个操作。但是从MyPanel中调用pack()会增加耦合性,所以我不想这样做。
为了解决这个问题,我扩展了JFrame(我们称之为MyFrame)并使MyFrame成为观察者,MyPanel成为可观察对象。每当MyPanel正在显示的图像更改时,它会通知监听器,即本例中的MyFrame。然后MyFrame在接收到通知时调用pack()
有没有更流畅的方法根据内容调整JFrame的大小呢?
1个回答

11
你所描述的解决方案似乎是合理的。
或者,每当MyPanel更改其图像时,它可以找到其父Frame,然后在其上调用pack()。如果不存在这样的Frame,则不执行任何操作。无需创建其他类,它的耦合度非常低。您可以使用SwingUtilities.getAncestorOfClass()轻松完成此操作。

1
是的,我的方法很合理。谢谢您的认可 :) - nimcap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接