コードでいくつかのJComponentを生成し、GridBagレイアウトを使用してそれらを配置しています。私のレイアウトは12行3列で構成され、各行はJSlider、JCheckBox、およびJLabelで構成されています。UIの生成に使用しているコードは次のとおりです。
final int NUM_MOTORS = 12;
// This is the panel I'm adding the components to.
pnlMotorSliders.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
for (int i = 0; i < NUM_MOTORS; ++i) {
c.gridy = i;
// Create the slider
JSlider slider = new JSlider(SwingConstants.HORIZONTAL, 10, 4085, 10);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.weightx = 0.9;
pnlMotorSliders.add(slider, c);
// Create the checkbox
JCheckBox checkBox = new JCheckBox();
checkBox.setOpaque(true);
checkBox.setBackground(Color.blue);
c.fill = GridBagConstraints.NONE;
c.gridx = 1;
c.weightx = 0.1;
pnlMotorSliders.add(checkBox, c);
// Create the current label
JLabel label = new JLabel("0");
label.setBorder(BorderFactory.createLineBorder(Color.red));
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 2;
c.weightx = 0.2;
pnlMotorSliders.add(label, c);
}
私が抱えている問題は、JLabelのいずれかにテキストを設定すると、設定しているテキストの幅がJLabelの幅。次の2つのスクリーンショットは、私が何を意味するかを示しています(赤と青の境界線はデバッグ用です)。
下部のJLabelのテキストを「-12」に設定しました。JLabelはテキストよりもはるかに幅が広いように見えますが、サイズが変更されており、残りのレイアウトに影響を与えています。
なぜこれが起こっているのですか、それを防ぐために何ができますか?