1

GridLayout に問題があり、JTextField が初期サイズよりも長いエントリに合わせて拡大されます。この問題を抱えた別のポスターは、SpringLayout が最も簡単な解決策であると言われたので、それを試しています。ただし、このパネルを表示するのに問題があります。

トップレベルのパネル (このフレーム内の唯一のもの) に設定された、それぞれ異なるレイアウトを持つ上、下、左、および右のパネルがあります。私がしようとしているこのSpringLayoutは、右側のパネルにあることです(topPanel.add(springPanel、BorderLayout.EASTとしてトップパネルに追加されました-これは、このパネルがGridLayoutのときに行った方法です)。以下のコードは後にモデル化されていますSpringLayout Oracle チュートリアル申し訳ありませんが、このレイアウトは初めてで、JTextField の固定幅を使用するためだけに使用しています。

JPanel testPanel = new JPanel();
SpringLayout layout = new SpringLayout();
testPanel.setLayout(layout);
JLabel label = new JLabel("First field: ");
JTextField field = new JTextField("enter text");

testPanel.add(label);
testPanel.add(field);

layout.putConstraint(SpringLayout.WEST, label, 5, SpringLayout.WEST, testPanel);
layout.putConstraint(SpringLayout.NORTH, label, 5, SpringLayout.NORTH, testPanel);
layout.putConstraint(SpringLayout.WEST, field, 5, SpringLayout.EAST, label);
layout.putConstraint(SpringLayout.NORTH, field, 5, SpringLayout.NORTH, testPanel);

...

topPanel.add(testPanel, BorderLayout.EAST);

任意のガイダンスをいただければ幸いです。ありがとう。

編集: cols 引数を追加してもうまくいかないようですが、試してみます。同じ問題が GridBagLayout にも存在します。次のフィールドにタブ移動しても、前のフィールドのサイズは変更されませんが、フレーム内の他の場所でそれらのフィールドの外側をクリックすると、含まれているテキストの長さが拡張されます。これは避ける必要があります。そして、私がやっていることの画像を投稿するのに十分な担当者ポイントがありません

EDIT2:列の追加が機能します-ある時点で試しました。それがどのように機能するかは完全にはわかりませんが、任意の値 (テストされた 1、10、15) で長さが固定されているように見えるため、そのパネルのフォーカスを離れてもサイズが変更されることはありません。ありがとう!

4

1 に答える 1

0

@Andrew Thompsonの答えはうまくいきました - col argを使用して列数を指定します(任意の数が機能するようです)。ありがとうございました!

于 2015-01-06T12:25:30.053 に答える