1

Swing を使用して Java でフォームを作成しようとしていますが、レイアウトの管理に問題があります。

ダイアログの中央にラベル付きのテキスト フィールドをいくつか配置し、右下に「保存」ボタンと「閉じる」ボタンを配置したいと考えています。

ダイアログの右下にボタンを追加するのは簡単ですが、テキスト フィールドを中央揃えにする方法がわかりません。センターコンポーネントメソッドがなければ、ダイアログウィンドウの中心を計算し、ダイアログのサイズが変更されたときに位置を更新することで、フィールドを整列できるかもしれないと考えました。しかし、私はスイングするのが初めてで、どちらを行うべきかわかりません (または、それが良いアイデアであるかどうかもわかりません)。

Spring Layout Manager を使用してコンポーネントを中央揃えにするにはどうすればよいですか?

public class Main {
    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MyFrame myFrame = new MyFrame();
                myFrame.setVisible(true);
            }
        });
    }
}

フレームの外観は次のとおりです。

public class MyFrame extends JFrame {

    JLabel label1;
    JTextField field1;

    JLabel label2;
    JTextField field2;

    JButton saveButton;
    JButton closeButton;

    public MyFrame() {
        initLookAndFeel();
        initFrameProperties();
        initContent();
        initLayout();
    }

    private initContent() {
        label1= new JLabel("Label 1");
        field1= new JTextField();
        label1.setLabelFor(field1);

        label2= new JLabel("Label 2");
        field2= new JTextField();
        label2.setLabelFor(field2);

        saveButton = new JButton("Save");

        closeButton = new JButton("Close");
        closeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }
        });


        this.add(label1);
        this.add(field1);
        this.add(lebel2);
        this.add(field2);
        this.add(saveButton);
        this.add(closeButton);
    }

    private void initLayout() {
        SpringLayout layout = new SpringLayout();

        this.setLayout(layout);
    }
4

2 に答える 2

6

コンポーネントの水平方向の中心をコンテンツ ペインの水平方向の中心と同じになるように設定する制約を追加することで、コンポーネントを中央揃えにすることができます。これにより、ウィンドウのサイズが変更されると、コンポーネントの位置が自動的に更新されます。

SpringLayout layout = new SpringLayout();

// For Horizontal Alignment    
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, component, 0, SpringLayout.HORIZONTAL_CENTER, contentPane);

// For Vertical Alignment
layout.putConstraint(SpringLayout.VERTICAL_CENTER, component, 0, SpringLayout.VERTICAL_CENTER, contentPane);

setLayout(layout);
于 2014-02-10T03:54:11.700 に答える
3
  • SpringLayout.NORTH は、コンポーネントの境界矩形の上端を指定します。
  • SpringLayout.SOUTH は、コンポーネントの境界矩形の下端を指定します。
  • SpringLayout.EAST は、コンポーネントの境界矩形の右端を指定します。
  • SpringLayout.WEST は、コンポーネントの境界矩形の左端を指定します。
  • SpringLayout.BASELINE は、コンポーネントのベースラインを指定します。
  • SpringLayout.HORIZONTAL_CENTER は、コンポーネントの境界矩形の水平方向の中心を指定します。
  • SpringLayout.VERTICAL_CENTER は、コンポーネントの境界矩形の垂直方向の中心を指定します。

( SpringLayout の使い方)

springLayout.putConstraint()コーナーに配置する場合と同様に、中央に配置する場合も同じように使用します。

于 2014-02-07T08:46:39.320 に答える