我有两个类,一个AnalogClock类和一个MainInterface类。
我在AnalogClock类中创建了一个timeChanged
方法,只要时间发生变化就会调用它。我的AnalogClock基本上是一个带绘图的JPanel。在MainInterface中,我设置了一个JFrame并添加了一个我的AnalogClock的对象。
是否可以随时更改我的窗口标题' timeChanged'叫做?我尝试使用getParent()
或getRootParent()
,但他们不认识setTitle()
。
答案 0 :(得分:5)
使用SwingUtilities
中的getWindowAncestor
方法。
//This gives you the first Window Object that contains the panel component
Window window = SwingUtilities.getWindowAncestor(panel);
//Cast it to JFrame
JFrame frame = (JFrame) window;
//Now, change the title
frame.setTitle("New Title");
答案 1 :(得分:1)
最简单的方法是将JFrame
的引用传递给JPanel
并调用setTitle()
。使用getParent()
,您将确定返回的Container
的正确类型,然后在找到JFrame
引用后,将其转换为setTitle
。
我通常按照第一个建议来做。
答案 2 :(得分:0)
听起来timeChanged
应该在MainInterface
课程中,因为timeChanged
需要同时引用AnalogClock
和JFrame
。原因是您的AnalogClock
可能不应与您的JFrame
相关联。