title: Swing component setSize()/setBounds() issue
body: <h2>Contents</h2>
  
  <hr>
  
  <ol>
  <li>Overview</li>
  <li>Example Code</li>
  <li>Screenshots of Problem</li>
  </ol>
  
  <hr>
  
  <h2>1. Overview of problem</h2>
  
  <hr>
  
  <p>So I'm writing a GUI for a complicated program I'm developing, and I get tired of trying to get components to scale correctly when the window is resized. </p>
  
  <p>At first I was using several layouts inside the jframe, and each jpanel to try and place the components correctly and scale them appropriately. Naturally, I got fed up with them, and I started trying to scale and set the x,y positions of the components dynamically (it's so much easier :D).</p>
  
  <p>Basically I'm trying to divide the screen into three sections left margin (JSplitPane), center (JTabbedPane), and right margin (JSplitPane). I don't think the internal components matter at this point. <strong>The main problem is</strong> the right JSplitPane scales over the whole window despite my using setBounds() to place the x,y over on the right and set the size to 21% of the total width. It seems to interact weird with the other panels.</p>
  
  <hr>
  
  <h2>2. Example Code</h2>
  
  <hr>
  
  <pre><code>import javax.swing.JButton;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  import javax.swing.JSplitPane;
  import javax.swing.JTabbedPane;
  
  import java.awt.event.ComponentEvent;
  import java.awt.event.ComponentListener;
  import java.awt.event.WindowEvent;
  import java.awt.event.WindowListener;
  import java.awt.Dimension;
  
  @SuppressWarnings("deprecation")
  public class test extends JFrame implements WindowListener {
  
  /* Constants =========================================================================*/
      private         final   double      LEFT_SIZE           =   .21;
      private         final   double      CENTER_SIZE         =   .58;
      private         final   double      RIGHT_SIZE          =   .21;
      private         final   int         TOP_PADDING         =   50;
      private         final   int         LEFT_PADDING        =   4;
      private         final   int         RIGHT_PADDING       =   4;
      private         final   int         BOTTOM_PADDING      =   4;
      private         final   int         MIN_WIDTH           =   640;
      private         final   int         MIN_HEIGHT          =   480;
  
      public  static  final   String      INIT_TITLE          =   "TestFrame v0.01";
  /* End Constants =====================================================================*/
  
  /* Instance Variables ================================================================*/
      private                 int         contentWidth;
      private                 int         contentHeight;
  /* End Instance Variables ============================================================*/
  
  /* Objects ===========================================================================*/        
      public  static  test        window;     
  
      /* Begin Frame Design =========================================================== */
          private         JSplitPane      left;
          private         JButton           button1;  private     JButton     button2;            
          private         JTabbedPane     center;
          private         JPanel            panel1;       private     JPanel      panel2;         
          private         JSplitPane      right;
          private         JButton           button3;  private     JButton     button4;
      /* End Frame Design ============================================================= */
  
  /* End Objects ====================================================================== */
  
  /** Initializes and Places all GUI elements **/
  public test ( String windowName ) {
      super(windowName);              //call parent constructor
      this.addWindowListener(this);   //adds window event functionality such as close
  
      this.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH); //Starts program maximized
      this.setMinimumSize(new Dimension(MIN_WIDTH,MIN_HEIGHT));
      this.setVisible(true);
      this.setMaximumSize(this.getSize());        
  
      /* Begin Init JFrame this ------------------------------------------------------------ */       
              button1 = new JButton("button1");               
              button2 = new JButton("button2");               
          left = new JSplitPane(JSplitPane.VERTICAL_SPLIT, button1, button2);
          left.setResizeWeight(1);
  
              button3 = new JButton("button3");               
              button4 = new JButton("button4");               
          right = new JSplitPane(JSplitPane.VERTICAL_SPLIT, button3, button4);
          right.setResizeWeight(.25);
  
              panel1 = new JPanel();              
              panel2 = new JPanel();              
          center = new JTabbedPane();
          center.addTab("Panel1", panel1);
          center.addTab("Panel2", panel2);
  
          this.add(left);
          this.add(center);
          this.add(right);
  
          this.addComponentListener(new ComponentListener() {
              @Override
              public void componentResized    (ComponentEvent e) {
                  window.contentWidth = window.getWidth() - window.LEFT_PADDING - window.RIGHT_PADDING;
                  window.contentHeight = window.getHeight() - window.TOP_PADDING - window.BOTTOM_PADDING;
  
                  window.left.setBounds               (   0,                                                  0,  (int)(window.contentWidth * window.LEFT_SIZE),      window.contentHeight);
                  window.center.setBounds             (   window.left.getWidth(),                             0,  (int)(window.contentWidth * window.CENTER_SIZE),    window.contentHeight);
                  window.panel1.setBounds             (   0,                                                  0,  (int)(window.contentWidth * window.CENTER_SIZE),    window.contentHeight);
                  window.panel2.setBounds             (   0,                                                  0,  (int)(window.contentWidth * window.CENTER_SIZE),    window.contentHeight);
                  window.right.setBounds              (   window.left.getWidth() + window.center.getWidth(),  0,  (int)(window.contentWidth * window.RIGHT_SIZE),     window.contentHeight);
               }
              public void componentHidden     (ComponentEvent e) {}
              public void componentMoved      (ComponentEvent e) {}
              public void componentShown      (ComponentEvent e) {}    
  
          });
          /* End Init JFrame this -------------------------------------------------------------- */
  }
  
  // window event abstracts
  @Override
  public void windowClosing       (WindowEvent event)     { window.dispose(); System.exit(0); } 
  public void windowClosed        (WindowEvent event)     {}
  public void windowDeiconified   (WindowEvent event)     {} 
  public void windowIconified     (WindowEvent event)     {} 
  public void windowActivated     (WindowEvent event)     {} 
  public void windowDeactivated   (WindowEvent event)     {} 
  public void windowOpened        (WindowEvent event)     {}
  
  public static void main(String[] args){     
      window = new test(INIT_TITLE); 
      window.setVisible(true);
  }
  }
  </code></pre>
  
  <hr>
  
  <h2>3. Screenshots</h2>
  
  <hr>
  
  <p><img src="https://i.stack.imgur.com/TZLzO.png" alt="Screenshot1">
  <img src="https://i.stack.imgur.com/Pn8Lu.png" alt="Screenshot2"></p>