2011-12-25 13 views
1

私は、アプリケーションのユーザが複数のウィンドウまたはframes(java)間で切り替わるアプリケーションを作成しています。
framefalse/trueに表示する代わりに、frameを切り替える方法はありますか?複数フレーム管理アプリケーション

答えて

4

実際には異なるフレーム(またはJFrames)である必要がありますか、それとも異なるコンテンツセットですか?別のメニューバー、フレームタイトルなどが必要ですか?一般的に言えば、アプリケーションには、複数のパネルのコンテンツが入っている単一のフレームを持つことができます(おそらくCardLayoutのようなものを使用している可能性があります)。確かにあなたが望むことを行う方法があります。正面に別のものを持ってくるだけですか?そうであれば、すべてのフレームにtoFront()コールがあり、これを表示順序の先頭にポップしますが、フォーカスの問題にも対処する必要があります。

+0

あなたの提案は 'CardLayout'を使うのはいいですが、アプリケーションの起動時に初期化されるかもしれない複数のパネルがあるとは思いませんでした。その後、メモリの問題が発生するでしょう –

+1

それは依存します。私は巨大なGUIを作成し、巨大なJTablesやTextAreasが存在していない限り、めったにメモリの問題はありませんでした。もう1つの選択肢は、必要に応じて各パネル/フレームを再作成することです。これはあまりにもオーバーヘッドになる可能性があります。数千のGUIオブジェクトは、あなたが正しく行うならば、あなたが考えるかもしれないほど多くのメモリを消費しません。 – Kylar

+0

もう1つ知りたいことがあります。ログインフォームがあり、ユーザーが** LogIn **ボタンをクリックして新しいウィンドウを開くと、 'setVisible(false)'の横のログインフォームをどうすればいいですか? –

1

ウィンドウが現時点で表示されていない場合は、setVisible()が正しい方法です。 ウィンドウが見えない場合は、requestFocus()requestForcusInWindow()を使用できます。

+0

私は、ウィンドウ間の切り替えに 'setVisible()'を使用しない解決策が望まれます。なぜなら、フレームを作ることによって 'setVisible(false)'は依然としてメモリ上にあり、問題になる可能性があるからです。 –

+0

フレームが閉じられたときにフレームを取り除きたいだけですか?そのためにWindowListenerを使用することができます。 – Kylar

+0

@Kylar:はい、そうかもしれません。しかし、ユーザはウィンドウを切り替えるので、閉じたウィンドウを再び開く必要があり、以前の情報がいくつかあります。 –

関連する問題