4

AnalogClockクラスとMainInterfaceクラスの2つのクラスがあります。

AnalogClockクラスにメソッドを作成しましたtimeChangedが、時間が変更されるたびに呼び出されます。私のAnalogClockは、基本的には図面付きのJPanelです。MainInterfaceで、JFrameをセットアップし、AnalogClockのオブジェクトを追加します。

'timeChanged'が呼び出されるたびにウィンドウのタイトルを変更することはできますか?getParent()またはを使用しようとしましgetRootParent()たが、認識されません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に含める必要があるように思えます。その理由は、おそらくあなたの.MainInterfacetimeChangedAnalogClockJFrameAnalogClockJFrame

于 2012-12-19T17:50:06.133 に答える