ある課題で、この図のようなレイアウトになければいけないとの指定があるのでやってるんですがhttp://www.dotup.org/uploda/www.dotup.org3826.jp …
選択演算子の下のラベル(選択した演算子を表示するもの)がうまくレイアウトできません。ここまでは何とかたどり着いたんですが・・
http://www.dotup.org/uploda/www.dotup.org3828.jp …
自分が作ったソースはこちらです。
lb[0] = new JLabel("選択演算子");
lb[1] = new JLabel(" ");
lb[2] = new JLabel("0");
lb[3] = new JLabel("です");
lb[0].setHorizontalAlignment(JLabel.LEFT);
lb[0].setVerticalAlignment(JLabel.TOP);
lb[1].setFont(new Font("Helvetica",Font.BOLD,20));
lb[1].setBorder(new EtchedBorder());
lb[1].setHorizontalAlignment(JLabel.LEFT);
lb[1].setVerticalAlignment(JLabel.BOTTOM);
lb[2].setFont(new Font("Helvetica",Font.BOLD,20));
lb[2].setBorder(new EtchedBorder());
lb[2].setHorizontalAlignment(JLabel.CENTER);
lb[3].setHorizontalAlignment(JLabel.CENTER);
bt_en[0] = new JButton("+");
bt_en[1] = new JButton("-");
bt_en[2] = new JButton("=");
bt_en[3] = new JButton("C");
bt_en[4] = new JButton("AC");
cnt.setLayout(new GridLayout(3,1));
pn[0].setLayout(new BorderLayout());
pn[1].setLayout(new GridLayout(4,3));
pn[2].setLayout(new FlowLayout());
pn[0].add(lb[0],BorderLayout.WEST);
pn[0].add(lb[1],BorderLayout.SOUTH);
pn[0].add(lb[2],BorderLayout.CENTER);
pn[0].add(lb[3],BorderLayout.EAST);
どのようにすればいいのか教えていただきたいです。
ちなみに使っている教科書は「やさしいJava活用編」です。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
どうしてもレイアウトマネジャーの使用が必須ならば
4つのLabelを1Panelで希望する配置は無理があります。
lb[0]とlb[1]で1Panelに上下配置
lb[2]とlb[3]で1Panelに左右配置(Panelが2つ必要)
必須でなければ、レイアウトマネジャーを無効にして
自由に指定した位置に配置するもがシンプルと思います。
pn[0].setLayout(null);
lb[0].setBounds(x,y,w,h);
lb[1].setBounds(x,y,w,h);
lb[2].setBounds(x,y,w,h);
lb[3].setBounds(x,y,w,h);
後、コンテナのレイアウトマネージャーを無効するべきでは?
(3つのパネルが縦三等分されるので)
cnt.setLayout(null);
回答ありがとうございます。
setBounds() はまだ習っていないので使えません・・申し訳ないです。
lb[0]とlb[1]でpn[0]に配置、lb[2]とlb[3]でpn[1]に配置してみました。
すると、変なことになってしまいました。↓
http://www.dotup.org/uploda/www.dotup.org4275.jpg
私のやり方がおかしいんだと思いますが、うまくいきません。ソースはこれです。
cnt.setLayout(new GridLayout(3,1));
pn[0].setLayout(new BorderLayout());
pn[1].setLayout(new BorderLayout());
pn[2].setLayout(new GridLayout(4,3));
pn[3].setLayout(new FlowLayout());
pn[0].add(lb[0],BorderLayout.NORTH);
pn[0].add(lb[1],BorderLayout.SOUTH);
pn[1].add(lb[2],BorderLayout.CENTER);
pn[1].add(lb[3],BorderLayout.EAST);
どこをどう変えるとうまくいきますでしょうか。
また、コンテナのレイアウトマネージャーを無効するべきでは?とのことですが、
それをするとパネルが表示されなくなってしまいます。。
これもやり方が間違っているのでしょうか。
何度も質問してしまい申し訳ないですが、またよろしければ回答をお願いします。
No.3
- 回答日時:
こういうものもあるんですね、わざわざリンクもつけて頂きましてありがとうございます。
プログラムは完成しましたが、GridBagLayoutは使いませんでした。習っていませんので。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AWTのアプレットにおいてのイベ...
-
KeyListenerの使い方について
-
JButton-背景の透明化
-
ListSelectionListenerのvalueC...
-
EXECLの行を削除
-
VB6.0でのTextboxの高さ変更
-
JPanelの切り替えと再描画
-
ボタンがマウスオーバーしない...
-
進捗バーが更新されません。
-
ボタンクリック後パネルを再描...
-
java junit list同士の比較方法
-
コンパイルエラー <identifier...
-
javaで質問です。 文字列2023/2...
-
[JAVA]try 内の変数を外で!?
-
オブジェクトの中のプロパティ...
-
変数を動的に利用するには?
-
byte型のマイナスの扱いについて
-
配列にnullを代入すると、null...
-
System.err. printlnとSystem.o...
-
javaのプログラムについて コマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
KeyListenerの使い方について
-
javaで文字数制限するには?
-
JPanelの重ね方/OverlayLayout他
-
【Swing】JPanel クラス外から...
-
4択クイズでのランダム出題の...
-
JPanelの切り替えと再描画
-
TextAreaでの文字の色
-
setPrefferedSizeとsetSize
-
TABキーの検出
-
Buttonを押すと画像が表示され...
-
JTableの列ヘッダ
-
あるコンボボックスを選択する...
-
最後の行に移動するには?
-
VB6.0でのTextboxの高さ変更
-
JavaのswingでCardLayoutの画面...
-
Enterキーでボタンを押すにはど...
-
JavaでのSwingを使った簡易電卓...
-
ウィンドウなしで画像表示
-
c言語のプログラミングで1から1...
おすすめ情報