title: Does anyone know how to layout a JToolBar that doesn't move or re-size any components placed in it?
body: <p>Can anyone help with this problem I'm trying to create a JToolBar and I want all its components to be fixed in size and position. I've tried a few different layout managers but they all center and/or re-size the components when the frame it's in is re-sized.</p>
  
  <p>Here is an example using GridbagLayout, I have also used the default layout manager using the <code>toolbar.add(component)</code> method but the result is the same :
  '</p>
  
  <pre><code>import java.awt.BorderLayout;
  import java.awt.Component;
  import java.awt.Dimension;
  import java.awt.GridBagConstraints;
  import java.awt.GridBagLayout;
  import javax.swing.*;
  
  public class ToolBarTest extends JFrame
  {
      private JToolBar toolbar;
      private JPanel mainPanel;
      private JPanel toolBarPanel;
      private JButton aButton;
      private JCheckBox aCheckBox;
      private JList aList;
      private Box toolbarBox;
      private GridBagConstraints toolbarConstraints;
      private GridBagLayout toolbarLayout;
      private JLabel shapeLabel;
      private JComboBox&lt;ImageIcon&gt; shapeChooser;
      private JLabel colorLabel;
      private JComboBox colorChooser;
  
      private String colorNames[] = { "Black" , "Blue", "Cyan", "Dark Gray",
              "Gray", "Green", "Light Gray", "Magenta", "Orange",
              "Pink", "Red", "White", "Yellow", "Custom" };
  
      private String shapeNames[] = { "Line", "Oval", "Rectangle",
          "3D Rectangle","Paint Brush", "Rounded Rectangle" };
  
      public ToolBarTest()
      {
  
  
          setLayout( new BorderLayout() );
          setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
          setSize( 500, 500 );
  
  
          add( createToolBar(), BorderLayout.PAGE_START );
  
          setVisible( true );
  
      }
  
  
      public void addToToolbar( Component component, int row, int column )
      {
          toolbarConstraints.gridx = column;
          toolbarConstraints.gridy = row;
          toolbarConstraints.anchor = GridBagConstraints.WEST;
          toolbarConstraints.fill = GridBagConstraints.NONE;
          toolbarConstraints.weightx = 0;
          toolbarConstraints.weighty = 0;
          toolbarConstraints.gridwidth = 1;
          toolbarConstraints.gridheight = 1;
          toolbarLayout.setConstraints( component, toolbarConstraints );
          toolbar.add( component );
  
      }// end addToToolbar
  
  
      public final JToolBar createToolBar()
      {
          toolbarLayout = new GridBagLayout();
          toolbarConstraints = new GridBagConstraints();
  
          // create the tool bar which holds the items to draw
          toolbar = new JToolBar();
          toolbar.setBorderPainted(true);
          toolbar.setLayout( toolbarLayout );
          toolbar.setFloatable( true );
  
  
  
  
          shapeLabel = new JLabel( "Shapes: " );
          addToToolbar( shapeLabel, 0, 1 );
  
  
          String iconNames[] = { "PaintImages/Line.jpg", 
              "PaintImages/Oval.jpg", "PaintImages/Rect.jpg",
              "PaintImages/3DRect.jpg","PaintImages/PaintBrush.jpg",
          "PaintImages/RoundRect.jpg"};
  
          ImageIcon shapeIcons[] = new ImageIcon[ shapeNames.length ];
  
  
          // create image icons 
          for( int shapeButton = 0; shapeButton &lt; shapeNames.length; shapeButton++ )
          {
  
              shapeIcons[ shapeButton ] =
                      new ImageIcon( iconNames[ shapeButton ] );
  
          }// end for
  
  
          shapeChooser = 
                  new JComboBox&lt; ImageIcon &gt;( shapeIcons );
  
          shapeChooser.setSize(  new Dimension( 50, 20 ));
  
          shapeChooser.setPrototypeDisplayValue( shapeIcons[ 0 ] ); 
  
          shapeChooser.setSelectedIndex( 0 );
  
          addToToolbar( shapeChooser, 0, 2 );
  
          colorLabel = new JLabel( "Colors: " );
  
          addToToolbar( colorLabel, 0, 3 );
  
          colorChooser = new JComboBox( colorNames );
          addToToolbar( colorChooser, 0, 4 );
  
  
          return toolbar;
      }// end createToolBar
  
      public static void main( String args[] )
      {
          new ToolBarTest();
  
      }// end main
  
  
  }// end class ToolBarTest'
  </code></pre>