4

私はこのようなオープンソースのJavaSwingアプリケーションを持っています:http: ここに画像の説明を入力してください //i47.tinypic.com/dff4f7.jpg

スクリーンショットでわかるように、JPanelは左右の2つの領域に分かれています。左側の領域には多くのテキストリンクがあります。[ SLA基準]リンクをクリックすると、[ SLA基準]ウィンドウがポップアップ表示されます。ポップアップウィンドウはJFrameオブジェクトです。

現在、ポップアップウィンドウをJPanelの右側の領域に配置しようとしています。つまり、ポップアップウィンドウが表示されなくなります。つまり、[ SLA基準]リンクをクリックすると、その内容が右側の領域に表示されます。 JPanel。JPanelの適切なエリアの既存のコンテンツは使用されなくなります。概念は、java apiドキュメントページ( http://docs.oracle.com/javase/6/docs/api)とまったく同じです。左のフレームのリンクをクリックすると、右のフレームにコンテンツが表示されます。

例の図は次のようになります。

(注:画像エディターを使用して作成および編集されています。これは、動作中のアプリケーションの実際のスクリーンショットではありません)

ここに画像の説明を入力してください http://i48.tinypic.com/5vrxaa.jpg

では、JFrameをJPanelに入れる方法はありますか?

JInternalFrameの使用を考えていますが、可能ですか?または別の方法はありますか?

更新:
ソースコード:
http ://pastebin.com/tiqRbWP8(VTreePanel.java、これは左右の領域分割のあるパネルです)
http://pastebin.com/330z3yuT (CPanel.java、これはVTreePanelのスーパークラスですまた、JPanelのサブクラス)
http://pastebin.com/MkNsbtjh (AWindow.java、これはポップアップウィンドウです)
http://pastebin.com/2rsppQeE (CFrame.java、これはAWindowのスーパークラスであり、 JFrameのサブクラス)

4

4 に答える 4

6

フレームを埋め込もうとする代わりに、フレームのコンテンツを埋め込みたいとします。

これには(少なくとも)1つの問題があります。

メニュー バーは、フレームの によって制御されますRootPane

あなた自身を新しいものにしJPanelます。そのレイアウトを に設定しますBorderLayout

( を使用して) フレームからメニュー バーを取得し、JFrame#getJMenuBar新しいパネルの北の位置に追加します。

フレームContentPaneを取得し、パネルの中央位置に追加します。

これを行おうとすると、他にもアプリケーション固有の問題が無数に発生することは間違いありません...

于 2012-10-17T04:40:40.503 に答える
5

いいえ、「JFrame を JPanel に入れる」必要はありません。上の図もこれを示していません。代わりに、別のウィンドウの上に (内部ではなく) 従属ウィンドウを表示しています。どうしても新しい下位ウィンドウを表示する必要がある場合は、JDialog を作成して表示することをお勧めします。チュートリアルでは、これを行う方法を説明します。または、コードの試行を投稿して行き詰まった場合は、これを行うのに役立ちます。


編集1
あなたは次のように述べています:

ポップアップ ウィンドウ スタイルから jpanel コンテンツ スタイルに変換する必要があります。Java api ドキュメント ページのスタイルと同じです: docs.oracle.com/javase/6/docs/api 左フレームのテキストをクリックすると、ポップアップが表示されませんよね? コンテンツは右フレームに直接表示されます。それが基本的に私の目標です。ソースコードはかなり大きいです。可能であればソースコードを貼り付けてみます。

あなたが探しているのは、単に MouseListener を JList または JTable に実装し、クリックに応答するときに、選択内容に基づいてコンテンツを取得することです。これは、JFrame を JPanel に配置することとは関係なく、すべて正しいプログラム ロジックを記述することと関係があります。繰り返しますが、モーダル JDialog で表示しますが、これはすべて、正しい非 GUI ロジックを作成するための二次的な作業です。ここであなたは本当に間違った木を吠えています。JFrames のことは忘れて、JPanels のこともひとまず忘れて、クリックされたときに SLA 基準データを抽出する方法に集中してください。


編集 2
私はあなたがやろうとしていることを見ていると思います - JFrames と JDialogs の代わりに、JPanels を使用し、ビューを交換できるようにするCardLayoutを使用してそれらを交換します。

于 2012-10-17T04:29:36.720 に答える
0

Jframe を JPanel に入れることはできません。代わりに、JFrame のような機能を持つ別のパネルを作成し、それを JPanel に埋め込むようにしてください。JPanel を別の JPanel に入れることはできますが、JFrame を別の JPanel に入れることはできません。

于 2015-10-19T05:30:42.630 に答える