5

私はSwingを初めて使用し、GUIを作成しようとしています。NetbeansのGUIクリエーターのものを使用して、私はなんとか好きなものを作ることができました。でも、これにエディターを使ったのは気分が悪いので、今はコードを使って同じデザインを作ろうとしています。これが私が作ろうとしているものの写真です: 作りたいもの 今私は「基準」セクションの作成に焦点を合わせています(はい、私は写真でそれを間違って綴ったことを知っています)これが私が現在これまでに持っているものです: 私が現在持っているもの 私は強調しましたマージンを増やしたい場所は赤で:

  • テキストボックスの右側とラベルの左側の間
  • 基準パネルの上部とJFrameの間
  • パネルの左側と右側とJFrameの間

私は、マージンを増やすことが私がやりたいことであるWeb開発から来ました。これが間違った用語である場合は、私に知らせてください。現在使用しているコードは次のとおりです。

public class Criteria extends JPanel {
    JLabel JobLabel = new JLabel();
    JLabel BoxLabel = new JLabel();
    JLabel PartLabel = new JLabel();
    JTextField JobInput = new JTextField();
    JTextField BoxInput = new JTextField();
    JTextField PartInput = new JTextField();

    public Criteria() {
        setLayout(new FlowLayout(FlowLayout.LEADING));
        setBorder(BorderFactory.createTitledBorder("Criteria"));
        JobLabel.setText("Job");
        JobLabel.setLabelFor(JobInput);
        BoxLabel.setText("Box");
        BoxLabel.setLabelFor(BoxInput);
        PartLabel.setText("Part");
        PartLabel.setLabelFor(PartInput);
        JobInput.setColumns(8);
        BoxInput.setColumns(8);
        PartInput.setColumns(8);
        add(JobLabel);
        add(JobInput);
        add(BoxLabel);
        add(BoxInput);
        add(PartLabel);
        add(PartInput);
    }
}

これらのコンポーネントにマージンを追加する方法がわからないので、助けていただければ幸いです。FlowLayoutでこの効果を達成できない場合は、代わりに何を使用すべきかを教えてください。

4

2 に答える 2

23

スイングは、マージンまたはボーダーを「ギャップ」と呼ぶ傾向があります。このFlowLayoutクラス(および他のいくつかのレイアウトクラス)を使用すると、コンストラクターで水平方向と垂直方向のギャップを次のように設定できます。

private static final int PADDING = 3;   // for example
...
    setLayout(new FlowLayout(FlowLayout.LEADING, PADDING, PADDING));

JPanelこれにより、ラベルとそのテキストボックスの間にパディングが追加されますが、各ペアを(おそらく)でラップすることができますFlowLayout。このためのカスタムコンポーネントクラスを作成します。

于 2012-06-09T19:35:30.990 に答える
8

EmptyBorderを使用して、コンポーネントに「パディング」を与えることを検討する必要があります。JPanelまたは他のコンポーネントの周囲に複数のタイプの境界線が必要な場合は、複合境界線を作成したり、JPanelsをネストしたりできます。コンポーネント間のギャップについては、上記のようにFlowLayout設定を使用するか、Boxクラスの支柱を使用できます。

于 2012-06-09T20:02:10.953 に答える