0

私はGridBagLayoutをいじっています。なんとなく理解できたので、このレイアウトにしました。しかし、私の現状は私のあるべき姿と一致していません。ここに画面があります。

そのまま :( そのまま :(

:s である必要があります
:s である必要があります

サイズが設定されるように少し調整する必要があることを理解しています(setSize())。しかし、本当に難しいのは、「連絡先の追加」JLabel を上部の中央に配置することです。
返信をお待ちしています。前もって感謝します。

これが私のコードです

package SimpleCRUD;

import java.awt.Component;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

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

@SuppressWarnings("serial")
public class ContactListFrame extends JFrame{
    JButton Button1, Button2;
    JTextField textField1, textField2, textField3;
    JLabel label1, label2, label3 , label4;
    GridBagLayout layout = new GridBagLayout();
    GridBagConstraints Constraint = new GridBagConstraints();

    public ContactListFrame() {
        super("All Contacts");
        Button1 = new JButton("Add");
        Button2 = new JButton("Cancel");
        textField1 = new JTextField(15);
        textField2 = new JTextField(15);
        textField3 = new JTextField(15);
        label4 = new JLabel("Add Contact");
        label4.setFont (new Font("fallan", 1, 25));
        label1 = new JLabel("First Name:");
        label2 = new JLabel("Last Name:");
        label3 = new JLabel("Phone Number:");

        setLayout(layout);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setSize(400, 200);
        setResizable(false);
        Constraint.fill = GridBagConstraints.NONE;
        Constraint.anchor = GridBagConstraints.NORTH;
        addComponent(label4, 0, 1, 1, 1);
        addComponent(textField1, 1, 1, 1, 1);
        addComponent(textField2, 2, 1, 1, 1);
        addComponent(textField3, 3, 1, 1, 1);
        addComponent(label1, 1, 0, 1, 1);
        addComponent(label2, 2, 0, 1, 1);
        addComponent(label3, 3, 0, 1, 1);
        addComponent(Button1, 4, 0, 2, 1);
        addComponent(Button2, 4, 1, 2, 1);
    }

    public void addComponent (Component comp, int row, int col, int width, int height){
        Constraint.gridx = col;
        Constraint.gridy = row;
        Constraint.gridwidth = width;
        Constraint.gridheight = height;
        layout.setConstraints(comp, Constraint);
        add(comp);
    }

}
4

1 に答える 1

1

GridBagLayout のドキュメントを見ると、GridBagConstraints の使用法のかなり良い例があります。

GridBagConstraints を使用するように変更されたコードは次のとおりです。

import java.awt.Component;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import java.awt.Insets;

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


public class ContactListFrame extends JFrame{
    JButton Button1, Button2;
    JTextField textField1, textField2, textField3;
    JLabel label1, label2, label3 , label4;
    GridBagLayout layout = new GridBagLayout();
    GridBagConstraints Constraint = new GridBagConstraints();

    public ContactListFrame() {
        super("All Contacts");
        Button1 = new JButton("Add");
        Button2 = new JButton("Cancel");
        textField1 = new JTextField(15);
        textField2 = new JTextField(15);
        textField3 = new JTextField(15);
        label4 = new JLabel("Add Contact");
        label4.setFont (new Font("fallan", 1, 25));
        label1 = new JLabel("First Name:");
        label2 = new JLabel("Last Name:");
        label3 = new JLabel("Phone Number:");

        setLayout(layout);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(400, 200);
        setResizable(false);
        Constraint.fill = GridBagConstraints.BOTH;
        Insets ins = new Insets(5, 5, 5, 5);
        Constraint.insets = ins;//this does the padding
        Constraint.weightx = 0.0;
        Constraint.gridwidth = GridBagConstraints.REMAINDER;//end row
        add(label4, Constraint);
        Constraint.gridwidth = GridBagConstraints.RELATIVE;//next to last component
        add(label1, Constraint);
        Constraint.gridwidth = GridBagConstraints.REMAINDER;//end row
        add(textField1, Constraint);
        Constraint.gridwidth = GridBagConstraints.RELATIVE;//next to last component
        add(label2, Constraint);
        Constraint.gridwidth = GridBagConstraints.REMAINDER;//end row
        add(textField2, Constraint);
        Constraint.gridwidth = GridBagConstraints.RELATIVE;//next to last component
        add(label3, Constraint);
        Constraint.gridwidth = GridBagConstraints.REMAINDER;//end row
        add(textField3, Constraint);
        Constraint.gridwidth = GridBagConstraints.RELATIVE;//next to last component
        add(Button1, Constraint);
        Constraint.gridwidth = GridBagConstraints.REMAINDER;//end row
        add(Button2, Constraint);
    }        

    public static void main(String args[]) {
      new ContactListFrame().setVisible(true);
    }
}

出力は次のようになります

ここに画像の説明を入力

于 2011-05-03T16:25:18.610 に答える