添付した画像のような「ピラミッドのように大きいコンポーネントの上にだんだん小さなコンポーネントを重ねていく」のではないコンポーネントの重ね方がしたいです。そのようなことは可能なのでしょうか?
やりたいこととしては、メインとなるパネルのその上で別のレイアウトをしたパネルを重ねたいです。
普通のレイアウトマネージャでaddで重ねるのでは、どうやってもうまくいきません。
OverlayLayoutも試してみましたが、以下の二つのパターンではうまくいきませんでした。
注:TopPanel,MainPanel,StringPanelはJPanelを継承した自作のクラスです
理想はMainPanel < StringPanel < TopPanelなのですが・・
JPanel basePanel = new JPanel();
basePanel.setLayout(new OverlayLayout(basePanel));
topPanel = new TopPanel();
topPanel.setOpaque(false);
basePanel.add(topPanel);
mainPanel = new MainPanel();
mainPanel.setLayout(new BorderLayout());
stringPanel = new StringPanel();
stringPanel.setPrintSpeed(50);
stringPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
mainPanel.add("South", stringPanel);
basePanel.add(mainPanel);
add(basePanel);
この場合だと、MainPanel < TopPanel < StringPanelの関係になってしまいます
JPanel basePanel = new JPanel();
basePanel.setLayout(new OverlayLayout(basePanel));
mainPanel = new MainPanel();
mainPanel.setLayout(new BorderLayout());
stringPanel = new StringPanel();
stringPanel.setPrintSpeed(50);
stringPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
mainPanel.add("South", stringPanel);
basePanel.add(mainPanel);
topPanel = new TopPanel();
topPanel.setOpaque(false);
basePanel.add(topPanel);
add(basePanel);
こうするとTopPanelの描画が見えなかったのでおそらくTopPanel < MainPanel < StringPanelとなってます。
ご教示願います・・!
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
なんか返事がないから、追加発言するか迷ったが、レイヤー的なイメージと、提示ソースでのpanel の入れ子があってないと思う。
OverlayLayoutで、3つを重ね表示するなら、3つの大本となる basePanel に OverlayLayoutを設定した後、上におきたいものから順に、basePanel の子として全部addすればいいだけだと思う。OverlayLayout では、add順でしか重ね順は指定できない。
JLayeredPaneは、重ね順の変更が可能。
お礼を忘れていて本当に申し訳ありません・・!
JLayerdPaneで層のある状態を作り出すことができました。
OverlayLayoutでは子の子(孫)のパネルが正しく扱われないということでしょうか。
まだどちらも正しく理解し、扱えているとは思えませんが、この問題について解決することができました。
本当にありがとうございました。
No.1
- 回答日時:
透過して、重ね表示するならJLayeredPaneのほうがいいのでは?
http://docs.oracle.com/javase/jp/7/api/javax/swi …
http://docs.oracle.com/javase/tutorial/uiswing/c …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP jpgraphで表示されない 2 2022/10/22 09:12
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Java インスタンス ダウンキャストについて以下の解釈であっているか教えて欲しいです。 サブクラスをスーパー 1 2022/03/27 18:53
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- 英語 難解な英文 2 2023/07/28 22:24
- 英語 英文解釈 4 2023/07/26 13:54
- 英語 I hope will ・・・・・・ 2 2022/07/24 09:48
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
JPanelの切り替えと再描画
Java
-
【Swing】JPanel クラス外からのremoveについて
Java
-
同じコンポーネントを複数の場所に配置したい
Java
-
-
4
JAVAでの背景画像表示
Java
-
5
Swing 編集不可でも選択可能なJTableセルの設定方法
Java
-
6
画面を隠す・消す方法を教えてください。
Java
-
7
JavaのswingでCardLayoutの画面遷移がしたいです
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java junit list同士の比較方法
-
KeyListenerの使い方について
-
JPanelの切り替えと再描画
-
javaで文字数制限するには?
-
JPanelの重ね方/OverlayLayout他
-
4択クイズでのランダム出題の...
-
エラーで式の開始が不正ですと...
-
Buttonを押すと画像が表示され...
-
EXECLの行を削除
-
TextAreaでの文字の色
-
ダブルクォーテーションのrepla...
-
オブジェクトの中のプロパティ...
-
Javaで改行などが出来ないのです。
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
javaで質問です。 文字列2023/2...
-
System.err. printlnとSystem.o...
-
大量のデータを読み込んで表示...
-
ループ処理の際、最後だけ","を...
-
変数を動的に作るには?
-
C言語のポインターに関する警告
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
JPanelの切り替えと再描画
-
JavaでのSwingを使った簡易電卓...
-
setPrefferedSizeとsetSize
-
javaで文字数制限するには?
-
4択クイズでのランダム出題の...
-
TextAreaでの文字の色
-
最後の行に移動するには?
-
JPanelの重ね方/OverlayLayout他
-
KeyListenerの使い方について
-
【Swing】JPanel クラス外から...
-
JButton-背景の透明化
-
JDialogを閉じた時の処理
-
JTable の 列幅を個別に設定す...
-
VB6.0でのTextboxの高さ変更
-
シンボルを解決できません
-
エラーで式の開始が不正ですと...
-
ArrayListの使い方について(初...
-
’じゃんけん’をするプログラム...
-
JOptionPaneでのフォーカスのト...
おすすめ情報