- PR -

menuBarのフロント表示について

1
投稿者投稿内容
begcom
会議室デビュー日: 2005/07/04
投稿数: 3
投稿日時: 2005-07-04 22:15
はじめまして、Javaアプリケーションに関して質問です。
ちなみにGUIアプリの開発は初めてです。

JFrameにパネルを2枚(left,right)貼り付けた
GUI画面を製作しているのですが、menuBar表示が
貼り付けたパネルに邪魔されてしまい、見えません。

なにかしらよい解決方法はありませんでしょうか?


private void init() {
/* window左側パネルの設定*/
leftPanel = new LeftPanel(this);

/* window右側パネルの設定*/
RightPanel right = new RightPanel(this);

/** menuBarの設定 */
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("file");
JMenuItem open = new JMenuItem("open");
JMenuItem save = new JMenuItem("save");
JMenuItem exit = new JMenuItem("exit");
file.add(open);
file.add(save);
file.add(exit);
menuBar.add(file);
setJMenuBar(menuBar);

/** window全体の設定 */
Container c = getContentPane();
c.add(leftPanel, BorderLayout.WEST);
c.add(stage, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(100,100);
setSize(800,600);
setTitle("Edit Window");

(略)
}
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-07-04 22:41
begcomさんこんにちは。

質問の文と、コードに若干の隔たりがあると思うのですが、
それはともかくとして、
もしかして、左右に貼りつけたパネルが重量コンポーネント
ということはありませんか?

たとえば、java.awt.Canvasとか、java.awt.Panelとか
またはそれらのサブクラスは重量コンポーネントです。
begcom
会議室デビュー日: 2005/07/04
投稿数: 3
投稿日時: 2005-07-05 00:36
Kissingerさんはじめまして、
すばやい返信ありがとうございます。

ご指摘の通りソースは間違っておりました。
正しくは↓でしたね。
c.add(leftPanel, BorderLayout.WEST);
c.add(right, BorderLayout.CENTER);

また、leftPanel,rightは共にPanelをextendしています。
おっしゃるとおり重量コンポーネントのようです。

ただ、なぜ重量コンポーネントではダメなのか、
どうあるべきなのか(変更すればよいのか)、に関する知識がありません。

大変お手数ですが、
解決策のヒントなどいただけましたら光栄です。
よろしくお願いいたします。
begcom
会議室デビュー日: 2005/07/04
投稿数: 3
投稿日時: 2005-07-05 00:44
Kissingerさん

先ほど以下のサイトから情報を得た結果、違いが分かりました。
http://wisdom.sakura.ne.jp/system/java/awt/Gjava54.html
::私の理解::
重量コンポーネントは背景を持つために
menubarの表示を隠していた。

ひとまず、leftPanel,rightをextends Containerへと変更することにより
無事解決することができました。

Kissingerさん、本当にありがとうございました!
もし私の理解で不十分&おかしなところがあれば
更に指摘していただけるとありがたいです。
1

スキルアップ/キャリアアップ(JOB@IT)