title: How do you stop a JLabel changing its size when its text changes?
body: <p>I'm generating some JComponents in code and using the GridBag layout to arrange them. My layout consists of 12 rows and 3 columns, with each row consisting of a JSlider, a JCheckBox and a JLabel. Here's the code I'm using to generate the UI:</p>
  
  <pre><code>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 &lt; 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);
  }
  </code></pre>
  
  <p>The problem I'm having is that when I set the text in any of the JLabels, they change their width and affect the rest of the layout, even if the width of the text that I'm setting appears to be much smaller than the width of the JLabel. The following two screenshots demonstrate what I mean (the red and blue borders were for debugging purposes):</p>
  
  <p><img src="https://i.stack.imgur.com/Skl3U.png" alt="The layout before changing the JLabel text."></p>
  
  <p><img src="https://i.stack.imgur.com/tdLIg.png" alt="The layout after changing the bottom JLabel text. Notice how the label has gotten bigger."></p>
  
  <p>I've set the text on the bottom JLabel to "-12". Even though the JLabel appears to be much wider than the text, it has changed its size, affecting the rest of the layout.</p>
  
  <p>Why is this happening and what can I do to prevent it?</p>