4

我有两个类,一个 AnalogClock 类和一个 MainInterface 类。

timeChanged在 AnalogClock 类中创建了一个方法,每当时间改变时都会调用它。我的 AnalogClock 基本上是一个带有绘图的 JPanel。在 MainInterface 中,我设置了一个 JFrame 并添加了我的 AnalogClock 的一个对象。

每当调用“timeChanged”时,是否可以更改我的窗口标题?我尝试使用getParent()orgetRootParent()但他们不认识setTitle().

4

3 回答 3

5

使用 getWindowAncestor 方法从SwingUtilities.

//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");
于 2012-12-19T17:47:53.840 回答
1

最简单的方法是将 的引用传递JFrameJPanel并调用setTitle()。使用getParent(),您将确定返回的正确类型,Container然后在找到JFrame参考后,将其转换为并调用setTitle.

我通常按​​照第一个建议去做。

于 2012-12-19T17:42:53.340 回答
0

听起来timeChanged应该在你的MainInterface课堂上,因为timeChanged需要同时引用AnalogClockJFrame。原因是您AnalogClock可能不应该与您的JFrame.

于 2012-12-19T17:50:06.133 回答