ある課題で、この図のようなレイアウトになければいけないとの指定があるのでやってるんですが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で質問しましょう!
似たような質問が見つかりました
- 物理学 二重障壁の計算 1 2023/03/05 16:49
- エアガン・モデルガン 4.2 lb = 1905.09 g のはずなのが、 (⇩)下記の URL の SPECS の所の 1 2022/10/06 15:43
- エアガン・モデルガン 2つとも 同じ Ruger® PC Carbine なのに、重量に差がある理由は? 1 2022/09/18 14:58
- 英語 SP5KPDW の マガジン込みの状態での重量は、いくらになるのか? 1 2022/05/03 10:32
- その他(ホビー) SP5KPDW の マガジン込みの状態での重量は、いくらになるのか? 1 2022/05/04 09:51
- PHP jpgraphで表示されない 2 2022/10/22 09:12
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java junit list同士の比較方法
-
TextAreaでの文字の色
-
iアプリで複数の画面(パネル)...
-
Java-Swing TextAreaにスクロー...
-
KeyListenerの使い方について
-
VB6.0でのTextboxの高さ変更
-
JTableの列ヘッダ
-
エラーで式の開始が不正ですと...
-
【Swing】JPanel クラス外から...
-
キーボードから入力された全角...
-
setPrefferedSizeとsetSize
-
あるコンボボックスを選択する...
-
javaで文字数制限するには?
-
c言語のプログラミングで1から1...
-
Enterキーでボタンを押すにはど...
-
JPanelの重ね方/OverlayLayout他
-
画像からヒストグラムを作りた...
-
連番をオブジェクト名の最後に...
-
JavaでのSwingを使った簡易電卓...
-
System.out.printlnの意味がよ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
EXECLの行を削除
-
JPanelの切り替えと再描画
-
TextAreaでの文字の色
-
最後の行に移動するには?
-
コンパイルエラー <identifier...
-
連番をオブジェクト名の最後に...
-
JDialogを閉じた時の処理
-
JPanelの重ね方/OverlayLayout他
-
JTableの列ヘッダ
-
ボタンクリック後パネルを再描...
-
【Swing】JPanel クラス外から...
-
4択クイズでのランダム出題の...
-
次のように書いたのですが、ウ...
-
エラーで式の開始が不正ですと...
-
KeyListenerの使い方について
-
JavaでのSwingを使った簡易電卓...
-
あるコンボボックスを選択する...
-
ArrayListの使い方について(初...
-
VB6.0でのTextboxの高さ変更
おすすめ情報