2011-12-07 1 views
0

私はAWTで新しく、問題に直面しています。ここcontainer != null私の機能func(Container container)、のコードサンプルです:次にAWT getPeerがnullを返す

Canvas embedder = new Canvas(); 
embedder.setBackground(...); 
embedder.setPreferredSize(...); 
container.add(embedder); 
container.setVisible(true); 

は私がframeWindow、長い を取得しようとしていますが、私の最初のアクションは

ComponentPeer peer = embedder.getPeer(); 

であると私はpeer == null

を取得しています

なぜこれが起こるのか教えてください。

答えて

2

なぜピアが必要ですか? java.awt.peerは消えてしまって、とにかく役に立たなかった。 AWTコンポーネントではなくSwingを使用します。

[ヘビーウェイト]コンポーネントが実現されていないため(実際には画面に置かれていない)、そこにはありません。

+0

Tom's right;おそらく、あなたのメソッドに渡しているコンテナがまだ画面に表示されていません。つまり、それ自体が画面上に表示されたウィンドウまたはダイアログの子ではありません。 一方、コンテナHADのいくつかの種類の可視ウィンドウに属していた場合、埋め込み者にはピアがあり、null以外の回答が返されます。 いずれにしても、Tomの最初のステートメントは本当に便利です。なぜあなたはネイティブピアを望んでいるのか非常に難しいと思っています。次に、もう一度考えてみてください... –

+0

私はparticulary AWTコンポーネントをチェックする必要があります、なぜ私はそれを使用しています。 'JInternalFrame frame = new JInternalFrame(" frame "、false、false、false、false); frame.setSize(220、220); func(フレーム); 'これは私がfuncを呼び出す前に使用しているものです。それで、私はそれが動作するようにここで行方不明を得ることができません – tratto

+0

私はそれを書いた人ではない、私はそれを修正し、AWTを使用して動作するようにする必要があります – tratto