0

私が望むのは、次のように、最初の textField を最初の jlabel の近くに配置し、最初の textfield と 2 番目の jlabel の間にいくつかのスペースを作成することです。

JLABEL: JTEXTFIELD ----(スペース)----------JLABEL: JTEXTFIELD

しかし、私が変更したものはすべて、私が望むものに近づきません。

ここに画像の説明を入力

TFields と Jlabels を追加する私のコード:

    JLabel lblProtocolo = new JLabel("Protocolo:");
    JLabel lblDataEntrada = new JLabel("Data Entrada:");
    JTextField tfProtocolo = new JTextField(10);
    JTextField tfDataEntrada = new JTextField(10);
    JTextField soteste = new JTextField(10);
    JLabel soocupa = new JLabel();
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 1;
    gbc.weighty = 1;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets(10, 10, 10, 10);
    gbc.anchor = GridBagConstraints.NORTHWEST;
    panel2DistribuidorDistribuir.add(lblProtocolo,gbc);
gbc.gridx = 1;
    panel2DistribuidorDistribuir.add(tfProtocolo,gbc);

gbc.gridx = 2;
    panel2DistribuidorDistribuir.add(lblDataEntrada,gbc);

gbc.gridx = 3;
    panel2DistribuidorDistribuir.add(tfDataEntrada,gbc);

gridx = 4; に目に見えない jtextfield を追加すると、私はそれを知っています。そして、この新しいjtextfieldの重みを1回=1に設定し、他のものを0に設定すると、「機能」しますが、gridx = 0,1,2,3のコンポーネントは自動サイズ変更できなくなります=(、手がかりの人

4

3 に答える 3

3

gbc.weightx = 1;基本的に、コンポーネントが使用可能なスペースの 100% を占有したいと言っています。

私がすることは、それを取り除くことから始めます...

で遊んgbc.insetsで、個々のコンポーネント間の距離を調整することもできます...

詳細については、 GridBagLayout の使用方法をご覧ください。

例で更新

ここに画像の説明を入力

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class GridBagLayoutTest100 {

    public static void main(String[] args) {
        new GridBagLayoutTest100();
    }

    public GridBagLayoutTest100() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            JLabel lblProtocolo = new JLabel("Protocolo:");
            JLabel lblDataEntrada = new JLabel("Data Entrada:");
            JTextField tfProtocolo = new JTextField(10);
            JTextField tfDataEntrada = new JTextField(10);

            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.insets = new Insets(4, 4, 4, 4);
            gbc.anchor = GridBagConstraints.WEST;

            add(lblProtocolo, gbc);
            gbc.gridx++;
            gbc.weightx = 1;
            add(tfProtocolo, gbc);

            gbc.anchor = GridBagConstraints.EAST;
            gbc.gridx++;
            add(lblDataEntrada, gbc);
            gbc.gridx++;
            gbc.weightx = 0;
            add(tfDataEntrada, gbc);            
        }
    }
}
于 2013-11-01T06:09:17.100 に答える
1

GridBagConstraints を設定した GridBagLayout にコンポーネントを追加します。GridBagConstraints を定義するときにインセットを定義できます。サンプル コードは次のとおりです。

        GridBagLayout gridBagLayout = new GridBagLayout();
        gridBagLayout.columnWidths = new int[]{0, 0, 155, 0, 0};
        gridBagLayout.rowHeights = new int[]{94, 0, 0};
        gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
        gridBagLayout.rowWeights = new double[]{1.0, 1.0, Double.MIN_VALUE};
        setLayout(gridBagLayout);



        JTextArea textArea = new JTextArea();
        textArea.setLineWrap(true);
        GridBagConstraints gbc_textArea = new GridBagConstraints();
        gbc_textArea.insets = new Insets(0, 0, 5, 15);
        gbc_textArea.fill = GridBagConstraints.BOTH;
        gbc_textArea.gridx = 2;
        gbc_textArea.gridy = 0;
        add(textArea, gbc_textArea);
于 2013-11-01T05:58:25.607 に答える