根据内容如何自动调整大小的JFrame
-
20-09-2019 - |
题
我已创建显示图像(可以称之为JPanel
)的自定义MyPanel
,我已经加入这个JFrame
的contentPane的。
我想JFrame
被自动调整大小以适应MyPanel
当图像变化。
它看起来像我需要调用frame.pack()
做到这一点。从调用pack()
MyPanel
增加耦合,所以我不想这样做。
要解决我延伸JFrame
问题(允许称之为MyFrame
)和由MyFrame
观测器,和可观察到的MyPanel
。每当图像MyPanel
正在显示它的变化通知听众,MyFrame
此实例。然后MyFrame
调用pack()
时,它得到通知。
是否有根据其内容调整大小JFrame
的更平滑的方式?
解决方案
在描述的解决方案似乎是合理的。
可替换地,每当MyPanel改变其图像,它可以去找到它的父框架,然后调用pack()的就可以了。如果没有这样的框架存在,则什么也不做。无需创建其他类,其松散的耦合,你会得到。您可以使用的 SwingUtilities.getAncestorOfClass()以容易地做到这一点。
不隶属于 StackOverflow