title: GridBagLayout: How to set fixed column width?
body: <p>I've been trying to set fixed column width in the following code for ages...The thing is that when I add a label to the panel on the left, then the width is incremented automatically...and i Would like the column width to be fixed...</p>
  
  <p>Could anyone help me please??</p>
  
  <p>This is the code: </p>
  
  <pre><code>import java.awt.AWTException;
  import java.awt.BorderLayout;
  import java.awt.Color;
  import java.awt.Cursor;
  import java.awt.Dimension;
  import java.awt.Graphics;
  import java.awt.Graphics2D;
  import java.awt.GridBagConstraints;
  import java.awt.GridBagLayout;
  import java.awt.Image;
  import java.awt.Panel;
  import java.awt.Point;
  import java.awt.Robot;
  import java.awt.Toolkit;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.awt.event.KeyEvent;
  import java.awt.event.KeyListener;
  import java.awt.event.MouseEvent;
  import java.awt.event.MouseListener;
  import java.io.BufferedReader;
  import java.io.BufferedWriter;
  import java.io.ByteArrayInputStream;
  import java.io.ByteArrayOutputStream;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.io.FileOutputStream;
  import java.io.FileReader;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.Calendar;
  import java.util.Timer;
  import java.util.TimerTask;
  
  import javax.sound.sampled.AudioFileFormat;
  import javax.sound.sampled.AudioFormat;
  import javax.sound.sampled.AudioInputStream;
  import javax.sound.sampled.AudioSystem;
  import javax.sound.sampled.DataLine;
  import javax.sound.sampled.LineUnavailableException;
  import javax.sound.sampled.TargetDataLine;
  import javax.swing.BorderFactory;
  import javax.swing.ImageIcon;
  import javax.swing.JButton;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.SwingUtilities;
  import javax.swing.border.Border;
  
  import java.io.IOException;
  
  public class CurrentItem extends JPanel{
  
      private static JFrame currentScreen; 
  
      public CurrentItem(JFrame p) { 
  
          GridBagConstraints c = new GridBagConstraints();
  
          //Borramos todo lo que haya en la pantalla 
          this.removeAll();
          this.revalidate();
  
          currentScreen = p;     
  
          this.setBackground(Color.LIGHT_GRAY);      
  
          this.setLayout(new GridBagLayout());  
  
          currentScreen.add(this);       
  
          // ---&gt;
          Panel leftPanel = new Panel(); 
          leftPanel.setBackground(Color.BLACK);
  
          c.weightx = 1.5;
          c.weighty = 1;
          //c.fill = GridBagConstraints.BOTH;      
          this.add(leftPanel, c);
          // &lt;---
  
          // ---&gt;
          Panel secondPanel = new Panel(); 
          secondPanel.setBackground(Color.green);
  
          c.weightx = 0.25;
          c.weighty = 1;
          c.fill = GridBagConstraints.BOTH;
  
          this.add(secondPanel, c);
          // &lt;---     
  
          // ---&gt;
          Panel rightPanel = new Panel(); 
          rightPanel.setBackground(Color.CYAN);
  
          c.weightx = 1.5;
          c.weighty = 1;
          c.fill = GridBagConstraints.BOTH;
  
          this.add(rightPanel, c);
          // &lt;---
  
          currentScreen.setVisible(true);
  
          this.requestFocusInWindow();         
      }
  }
  </code></pre>