Wie können Sie verhindern, dass ein JLabel seine Größe ändert, wenn sich der Text ändert?

Ich generiere einige JComponents im Code und ordne sie im GridBag-Layout an. Mein Layout besteht aus 12 Zeilen und 3 Spalten, wobei jede Zeile aus einem JSlider, einer JCheckBox und einem JLabel besteht. Hier ist der Code, mit dem ich die Benutzeroberfläche generiere:

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

Das Problem, das ich habe, ist, dass wenn ich den Text in einem der JLabels einstelle, diese ihre Breite ändern und sich auf den Rest des Layouts auswirken, auch wenn die Breite des von mir eingestellten Texts viel kleiner zu sein scheint als die Breite des JLabels. Die folgenden zwei Screenshots zeigen, was ich meine (die roten und blauen Ränder dienten zur Fehlersuche):

Ich habe den Text auf dem unteren JLabel auf "-12" gesetzt. Obwohl das JLabel viel breiter als der Text zu sein scheint, hat es seine Größe geändert, was sich auf den Rest des Layouts auswirkt.

Warum passiert das und was kann ich tun, um es zu verhindern?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage