¿Cómo detienes a JLabel cambiando su tamaño cuando cambia su texto?

Estoy generando algunos JComponents en código y usando el diseño de GridBag para organizarlos. Mi diseño consta de 12 filas y 3 columnas, y cada fila consta de un JSlider, un JCheckBox y un JLabel. Aquí está el código que estoy usando para generar la interfaz de usuario:

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

El problema que tengo es que cuando configuro el texto en cualquiera de los JLabels, cambian su ancho y afectan el resto del diseño, incluso si el ancho del texto que estoy configurando parece ser mucho menor que el ancho de la JLabel. Las siguientes dos capturas de pantalla demuestran lo que quiero decir (los bordes rojo y azul fueron para propósitos de depuración):

He puesto el texto en la parte inferior de JLabel a "-12". Aunque la JLabel parece ser mucho más ancha que el texto, ha cambiado su tamaño, afectando el resto del diseño.

¿Por qué sucede esto y qué puedo hacer para evitarlo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta