事は非常に単純ですが、もちろん、自分でもう少し検索する必要があります。
ところで、あなたはボタンのレイアウトとサイズの管理に問題があります。
紛らわしいコードを生成し、実際に何が起こっているのかを理解するのは良くないため、レイアウト作成者を使用することを忘れてください。
通常、初心者向けに、BoxLayout という特定のレイアウトについて話します [編集: もちろん、目標に到達するためのより簡単な方法はたくさんあります。この回答には教育目的があり、理解できるように十分に大きくする必要があります。 「ここで、これをコピーして貼り付けます]
まず、Box レイアウトがどのように機能するかを知る必要があります。上から下 (PAGE_AXIS) と左から右 (LINE_AXIS) の 2 種類の AXIS (コンポーネントを追加して配置する方法) があります。この 2 つの軸を使用して、さまざまなレイアウトをネストすることで、必要なものをうまく作成できます。
最初に知っておくべきことは、より多くのレイアウトをネストする方法です。
レイアウトをネストするには、JPanel を使用します。それぞれに別の軸があり、別の軸が別の軸に配置されます。
ケースの分析を開始します。パネルの中央にある 3 つのボタンの上にラベルがあります。コンポーネントのある内側のパネルから始めることができます。以下を含む PAGE_AXIS (上から下) が必要です。
// +---------------------+
// | white space |
// | |
// + - - - - - - - - - - +
// |JLABEL JLABEL JLABEL|
// + - - - - - - - - - - +
// | white space |
// |_____________________|
// | button |
// |---------------------|
// |_____________________|
// | button |
// |---------------------|
// |_____________________|
// | button |
// |---------------------|
// | white space |
// +---------------------+
Panel がコンポーネントの幅に合わせて調整されていることがわかるように、BoxLayout がコンポーネントに最大サイズを与えることを好むというトリックがあります。この場合、マージンがないため、左右のマージンを設定するために、LINE_AXIS を使用して外部の別の JPanel が必要です。結果は次のようになります。
// +---+---------------------+---+
// | | white space | |
// | | | |
// | + - - - - - - - - - - + |
// | W |JLABEL JLABEL JLABEL| W |
// | H + - - - - - - - - - - + H |
// | I | white space | I |
// | T _____________________ T |
// | E | button | E |
// | --------------------- |
// | S _____________________ S |
// | P | button | P |
// | A --------------------- A |
// | C _____________________ C |
// | E | button | E |
// | --------------------- |
// | | white space | |
// +-----------------------------+
したがって、最初に知っておく必要があるのは、各パネルのレイアウトを設定することです。
// Initializing
JPanel outside = new JPanel();
JPanel inside = new JPanel();
// setting a layout with horizontal alignment
outside.setLayout(new BoxLayout(outside, BoxLayout.LINE_AXIS));
// setting a layout with vertical alignment
inside.setLayout(new BoxLayout(inside, BoxLayout.PAGE_AXIS));
これが完了したら、パネルを埋める必要があります。外から始めます。部外者は (私のイメージを見て) 最初に水平スペース、次に内側パネル、次に別の水平スペースを必要とします。それらを追加します。
// create an horizontal space of 20px
outside.add(Box.createHorizontalStrut(20));
outside.add(inside);
outside.add(Box.createHorizontalStrut(20));
次に、内側に移動します。大きな空白、ラベル、別の白、ボタン、小さな白、ボタン、小さな白、3 つ目のボタン、大きな白が必要です。これでパネルの内側を埋めていきます。
// create a vertical space of 20px
inside.add(Box.createVerticalStrut(20));
JLabel title = new JLabel("THE TITLE");
inside.add(title);
inside.add(Box.createVerticalStrut(20);
JButton btt1 = new JButton("BUTTON ONE");
// create a new dimension object
Dimension d = new Dimension(200,40);
// set the four kind of size, the button CANNOT be different than the dimension I choose
btt1.setSize(d);
btt1.setMinimumSize(d);
btt1.setMaximumSize(d);
btt1.setPreferredSize(d);
JButton btt2 = new JButton("BUTTON TWO");
btt2.setSize(d);
btt2.setMinimumSize(d);
btt2.setMaximumSize(d);
btt2.setPreferredSize(d);
JButton btt3 = new JButton("BUTTON THREE");
btt3.setSize(d);
btt3.setMinimumSize(d);
btt3.setMaximumSize(d);
btt3.setPreferredSize(d);
// Now that the button are ready we put them in the panel.
inside.add(btt1);
inside.add(Box.createVerticalStrut(5));
inside.add(btt2);
inside.add(box.createVerticalStrut(5));
inside.add(btt3);
// Last white space, the bottom margin:
inside.add(Box.createVerticalStrut(20));
これで、構造が完全にセットアップされました。見えるようにするだけで、すべて完了です。もちろん、JFrame または JDialog に配置する必要があります。もちろん、BoxLayout は任意のコンポーネントに設定できるため、最初のパネルは JFrame または JDialog にすることができます。
この基本的なチュートリアルで、この種の構造のプログラミングの基本を理解していただければ幸いです。しかし、さらに複雑にするためには、これを読む必要があります:
http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html
http://docs.oracle.com/javase /tutorial/uiswing/layout/box.html
ごきげんよう。