こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JavaのSwingのレイアウト

Swingを学習中ですが、うまくレイアウトできません。
添付した画像のようなレイアウトにしたいです。

作ってみたものは以下です。
import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.*;

public class LayoutTest {
public static void main(String[] args) {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JTextField searchFiled = new JTextField("テキスト");
String[] comboboxString = {"C", "C++", "Java"};
JComboBox comboBox = new JComboBox(comboboxString);
JButton button = new JButton("ボタン");

panel.add(comboBox, BorderLayout.EAST);
panel.add(searchFiled, BorderLayout.CENTER);
panel.add(button, BorderLayout.WEST);

frame.add(panel, BorderLayout.PAGE_START);
JPanel redPanel = new JPanel();
redPanel.setBackground(Color.RED);
frame.add(redPanel);

frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

}
}

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2013-10-16 11:07:12

QNo.8307775

困ってます

質問者が選んだベストアンサー

import java.awt.*;
import javax.swing.*;

public class LayoutTest {
public static void main(String[] args) {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JTextField searchFiled = new JTextField("テキスト");
String[] comboboxString = {"C", "C++", "Java"};
JComboBox comboBox = new JComboBox(comboboxString);
JButton button = new JButton("ボタン");
//ここから4行
panel.setLayout(new BorderLayout());
panel.add(comboBox, BorderLayout.WEST);
panel.add(searchFiled, BorderLayout.CENTER);
panel.add(button, BorderLayout.EAST);

frame.add(panel, BorderLayout.PAGE_START);
JPanel redPanel = new JPanel();
redPanel.setBackground(Color.RED);
frame.add(redPanel);

frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

}
}


やりたい方向に近づいたでしょうか?
WESTが左、EASTが右ですね。

投稿日時 - 2013-10-16 11:53:03

お礼

ありがとうございます。

西と東も間違えていましたね。
panel.setLayout(new BorderLayout());をしないといけないのがわかりました。ありがとうございます。

投稿日時 - 2013-10-16 13:02:23

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

javax.swing.JPanel は標準で FlowLayout なので、ご質問の要件なら BorderLayout に変更する必要があります。

panel.setLayout(new BorderLayout());
または
JPanel panel = new JPanel(new BorderLayout());

投稿日時 - 2013-10-16 11:51:49

お礼

ありがとうございます。

>javax.swing.JPanel は標準で FlowLayout なので
よくわかりました。
Swingのレイアウトに関しては色々と疑問が出ると思うので、何かありましたらまたよろしくお願いします。

投稿日時 - 2013-10-16 13:01:29

あなたにオススメの質問