2

1 つのボタンと複数のフィールドを持つ単純なプログラムを作成したいと考えています。私が頭の中でこれを計画していたとき、私はグリッドレイアウトを使用したいと思っていました。または、学習しているので、少なくとも最初はボタンを中央に配置したかったのです。これが私がこれまでに持っているものです。私の質問は、グリッド レイアウトのどこに配置するか、またはパネル、フレーム、またはボタンに配置の中心を設定するかということです。

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Normal {
    public static void main(String[] args) {
        JFrame frame = new JFrame("test");
        JButton button = new JButton("why");
        JPanel panel = new JPanel();
        JTextField field= new JTextField();


    //button
    button.setSize(50, 50);

    //Field
    field.setSize(250, 25);

    //Frame
    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.add(panel);
    frame.add(field);
    frame.add(button);

        }
}
4

2 に答える 2

3

コンポーネントは必ず の に追加しContainerJFrameください。のレイアウトをContainerとして設定しGridLayoutます。たとえば、次のようにコードを変更できます。

import java.awt.GridLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Normal {
    public static void main(String[] args) {
        JFrame frame = new JFrame("test");
        JButton button = new JButton("why");
        JPanel panel = new JPanel();
        JTextField field= new JTextField();
        Container c = frame.getContentPane();
        c.setLayout(new GridLayout(3,1));//Devides the container in 3 rows and 1 column
        c.add(panel);//Add in first row
        c.add(button);//Add in second row
        c.add(field);//Add in third row
        frame.setSize(500, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        }
}
于 2013-03-15T21:36:13.193 に答える
1

JFrame からクラスを拡張するアプローチでは、コンポーネントを追加する場所を簡単に設定できます。exのパネルがある場合。ボタン、次のように追加できます。

add(panel, BorderLayout.CENTER);

お役に立てれば。

于 2013-03-16T03:30:26.143 に答える