title: Java Swing Boxlayout: having panels of different sizes (ratio to each other)
body: <p>I'm trying to create a boxlayout panel with 2 other panels inside it, one of which is only half the size of the other (so a ratio of 1/3 to 2/3). Setting preferred size doesn't seem to work and I've been unable to figure out any other way (the following code was mainly generated with Windowbuilder, so apologies if it's a bit of a mess):</p>
  
  <pre><code>public class GUIControls extends JFrame implements IGUIControls {
      private JTextField textField;
  
      private int posX=0,posY=0;
  
      public GUIControls() {
  
          getContentPane().setBackground(Color.WHITE);
          getContentPane().setLayout(new CardLayout(0, 0));
  
          JPanel rootPanel = new JPanel();
          rootPanel.setBorder(new LineBorder(new Color(0, 0, 255), 1, true));
          rootPanel.setBackground(Color.WHITE);
          getContentPane().add(rootPanel, "name_25253210045969");
          rootPanel.setLayout(new BoxLayout(rootPanel, BoxLayout.X_AXIS));
          rootPanel.setPreferredSize(new Dimension(600, 400));
  
          JPanel menuLeft = new JPanel();
          rootPanel.add(menuLeft);
          menuLeft.setBackground(Color.WHITE);
          menuLeft.setLayout(null);
          menuLeft.setPreferredSize(new Dimension((1/3)*rootPanel.getWidth(), rootPanel.getHeight()));
  
          JPanel contentRight = new JPanel();
          rootPanel.add(contentRight);
          contentRight.setBackground(Color.WHITE);
          contentRight.setPreferredSize(new Dimension((2/3)*rootPanel.getWidth(), rootPanel.getHeight()));
          contentRight.addKeyListener(new KeyAdapter() {
              @Override
              public void keyPressed(KeyEvent arg0) {
                  CardLayout cardLayout = (CardLayout) getContentPane().getLayout();
                  cardLayout.show(getContentPane(), "name_36737116256884");
              }
          });
          contentRight.setLayout(null);
  
          setUndecorated(true);   
  
          addMouseListener(new MouseAdapter()
          {
             public void mousePressed(MouseEvent e)
             {
                posX=e.getX();
                posY=e.getY();
             }
          });
  
          addMouseMotionListener(new MouseAdapter()
          {
               public void mouseDragged(MouseEvent evt)
               {
                  //sets frame position when mouse dragged            
                  setLocation (evt.getXOnScreen()-posX,evt.getYOnScreen()-posY);
  
               }
          });
  
      }
  
      public void runGUI(){
          javax.swing.SwingUtilities.invokeLater(new Runnable() {
              public void run() {
                  GUIControls guiControls = new GUIControls();
                  guiControls.pack();
                  guiControls.setLocationRelativeTo(null);
                  guiControls.setSize(600, 400);
                  guiControls.setVisible(true);
              }
          });
      }
  }
  </code></pre>
  
  <p>Does anyone know how I'd go about doing this?</p>
  
  <p>Thanks.</p>