我已创建显示图像(可以称之为JPanel)的自定义MyPanel,我已经加入这个JFrame的contentPane的。

我想JFrame被自动调整大小以适应MyPanel当图像变化。

它看起来像我需要调用frame.pack()做到这一点。从调用pack() MyPanel增加耦合,所以我不想这样做。

要解决我延伸JFrame问题(允许称之为MyFrame)和由MyFrame观测器,和可观察到的MyPanel。每当图像MyPanel正在显示它的变化通知听众,MyFrame此实例。然后MyFrame调用pack()时,它得到通知。

是否有根据其内容调整大小JFrame的更平滑的方式?

有帮助吗?

解决方案

在描述的解决方案似乎是合理的。

可替换地,每当MyPanel改变其图像,它可以去找到它的父框架,然后调用pack()的就可以了。如果没有这样的框架存在,则什么也不做。无需创建其他类,其松散的耦合,你会得到。您可以使用的 SwingUtilities.getAncestorOfClass()以容易地做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top