3

を初めて使用していSwingますGridBagLayoutが、これまでにコンテナーに追加したコンポーネントは 2 つだけですが、さらに下に垂直に追加するつもりです。これまでのところ、最初のコンポーネント (a JLabel) は に正しく配置PAGE_STARTされており、コンポーネントの対応する の重み属性を設定することを覚えていますGridBagConstraints。ただし、2 番目のコンポーネント (a JTextField) は意図したとおりに配置されておらず、 の下に移動するのではなく、コンテナーの中央に配置されていJLabelます。FIRST_LINE_STARTPAGE_STARTNORTH&を含む複数のアンカー定数を使用しようとしましNORTHWESTたが、これまでのところ何も機能していません。

そこで、もう一度、才能のあるスタックオーバーフローのコーダーに助けを求めます。以下はコードのスニペットで、その下は問題のイメージです。

    // Instantiate components and configure their corresponding GridBagConstraints attributes
    // refPlusType properties
    refPlusType = new JLabel("<html><h3>"+"Reference"+" - "+"Job Type"+" </h3><hr /></html>");
    refPlusTypeGC = new GridBagConstraints();
    refPlusTypeGC.gridx = 0; // Grid position 
    refPlusTypeGC.gridy = 0;
    refPlusTypeGC.gridwidth = 2; // Number of colums occupied by component
    refPlusTypeGC.insets = new Insets(5, 10, 5, 10); // Specifies margin
    refPlusTypeGC.weightx = 0.1; // Required for anchor to work. 
    refPlusTypeGC.weighty = 0.1; // Required for anchor to work. 
    refPlusTypeGC.anchor = GridBagConstraints.PAGE_START; // Position in container

    // addressLine1 properties
    addressLine1 = new JTextField();
    addressLine1GC = new GridBagConstraints();
    addressLine1GC.gridx = 0; 
    addressLine1GC.gridy = 1;
    addressLine1GC.gridwidth = 2; 
    addressLine1GC.insets = new Insets(0, 10, 0, 10); 
    addressLine1GC.fill = GridBagConstraints.HORIZONTAL; // Specifies component fill Horizontal space
    addressLine1GC.weightx = 0.1; 
    addressLine1GC.weighty = 0.1; 
    addressLine1GC.anchor = GridBagConstraints.FIRST_LINE_START;

    // Add components to this HALLogisticsDetailsPanel
    this.add(refPlusType, refPlusTypeGC);
    this.add(addressLine1, addressLine1GC);

下の画像;

ここに画像の説明を入力

ご協力いただきありがとうございます。

4

4 に答える 4

4

weightyforaddressLine1をもっと大きな値に増やしてみてください。1000に設定して簡単なテストを行いました:

addressLine1GC.weighty = 1000.0;

addressLine1これにより、下に空白があるラベルの下にフィールドが押し上げられました。

于 2013-08-21T13:23:46.617 に答える
1

私が見た GridBagLayout の最高の「チュートリアル」は、Scott Stanchfield によって作成されました。彼が JavaOne 2001 で行った PowerPoint プレゼンテーションへのリンクは、ここにあります。

以前は同じ情報を掲載した記事がオンラインにありましたが、オラクルに飲み込まれてしまったようです。

GBL が理想的でない理由についてのすべての警告をお読みください。これを使用することに決めた場合は、Scott が、GUI の簡単なスケッチを作成することによってすべての制約を決定する方法について、優れた視覚的なレッスンを提供します。

ジム S.

于 2013-08-21T16:08:51.830 に答える