Как остановить JLabel, изменяя его размер при изменении текста?

Я генерирую несколько JComponents в коде и использую макет GridBag для их упорядочения. Мой макет состоит из 12 строк и 3 столбцов, причем каждая строка состоит из JSlider, JCheckBox и JLabel. Вот код, который я использую для создания пользовательского интерфейса:

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);
}

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я устанавливаю текст в любом из JLabels, они меняют свою ширину и влияют на остальную часть макета, даже если ширина текста, который я задаю, кажется намного меньше, чем ширина JLabel. Следующие два скриншота демонстрируют, что я имею в виду (красная и синяя границы были для целей отладки):

Я установил текст в нижней части JLabel на "-12". Несмотря на то, что JLabel выглядит намного шире, чем текст, он изменил свой размер, затрагивая остальную часть макета.

Почему это происходит и что я могу сделать, чтобы предотвратить это?

Ответы на вопрос(4)

Ваш ответ на вопрос