title: Java Box Class: Unsolvable: aligning components to the left or right
body: <p>I have been trying to left align buttons contained in a Box to the left, with no success.</p>
  
  <p>They align left alright, but for some reason dont shift all the way left as one would imagine.</p>
  
  <p>I attach the code below.  Please try compiling it and see for yourself.  Seems bizarre to me.</p>
  
  <p>Thanks,  Eric</p>
  
  <pre><code>import java.awt.Dimension;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.io.BufferedReader;
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.FileReader;
  import java.io.IOException;
  import javax.swing.Box;
  import javax.swing.BoxLayout;
  import javax.swing.JButton;
  import javax.swing.JFileChooser;
  import javax.swing.JFrame;
  import javax.swing.JMenu;
  import javax.swing.JMenuBar;
  import javax.swing.JMenuItem;
  import javax.swing.JScrollPane;
  import javax.swing.JTextArea;
  
  public class MainGUI extends Box implements ActionListener{
      //Create GUI Components
      Box centerGUI=new Box(BoxLayout.X_AXIS);
      Box bottomGUI=new Box(BoxLayout.X_AXIS);
      //centerGUI subcomponents
      JTextArea left=new JTextArea(), right=new JTextArea();
      JScrollPane leftScrollPane = new JScrollPane(left), rightScrollPane = new JScrollPane(right); 
      //bottomGUI subcomponents
      JButton encrypt=new JButton("Encrypt"), decrypt=new JButton("Decrypt"), close=new JButton("Close"), info=new JButton("Info");
      //Create Menubar components
      JMenuBar menubar=new JMenuBar();
      JMenu fileMenu=new JMenu("File");
      JMenuItem open=new JMenuItem("Open"), save=new JMenuItem("Save"), exit=new JMenuItem("Exit");
      int returnVal =0;
  
      public MainGUI(){
          super(BoxLayout.Y_AXIS);
          initCenterGUI();
          initBottomGUI();
          initFileMenu();
          add(centerGUI);
          add(bottomGUI);
          addActionListeners();
      }
      private void addActionListeners() {
          open.addActionListener(this); 
          save.addActionListener(this); 
          exit.addActionListener(this); 
          encrypt.addActionListener(this); 
          decrypt.addActionListener(this); 
          close.addActionListener(this); 
          info.addActionListener(this); 
      }
      private void initFileMenu() {
          fileMenu.add(open);
          fileMenu.add(save);
          fileMenu.add(exit);
          menubar.add(fileMenu);
      }
      public void initCenterGUI(){
          centerGUI.add(leftScrollPane);
          centerGUI.add(rightScrollPane);
      }
      public void initBottomGUI(){
          bottomGUI.setAlignmentX(LEFT_ALIGNMENT);
          //setBorder(BorderFactory.createLineBorder(Color.BLACK));
          bottomGUI.add(encrypt);
          bottomGUI.add(decrypt);
          bottomGUI.add(close);
          bottomGUI.add(info);
      }
      @Override
      public void actionPerformed(ActionEvent arg0) {
          // find source of the action
          Object source=arg0.getSource();
          //if action is of such a type do the corresponding action
          if(source==close){
               kill();
          }
          else if(source==open){
              //CHOOSE FILE
              File file1 =chooseFile();
              String input1=readToString(file1);
              System.out.println(input1);
              left.setText(input1);
          }
          else if(source==decrypt){
              //decrypt everything in Right Panel and output in left panel
              decrypt();
          }
          else if(source==encrypt){
              //encrypt everything in left panel and output in right panel
              encrypt();
          }
          else if(source==info){
              //show contents of info file in right panel
              doInfo();
          }
          else {
              System.out.println("Error");
              //throw new UnimplementedActionException();
          }
      }
  
      private void doInfo() {
          // TODO Auto-generated method stub
      }
      private void encrypt() {
          // TODO Auto-generated method stub
      }
      private void decrypt() {
          // TODO Auto-generated method stub
      }
      private String readToString(File file) {
          FileReader fr = null;
          try {
              fr = new FileReader(file);
          } catch (FileNotFoundException e1) {
              e1.printStackTrace();
          }
          BufferedReader br=new BufferedReader(fr);
  
          String line = null;
          try {
              line = br.readLine();
          } catch (IOException e) {
              e.printStackTrace();
          }
          String input="";
          while(line!=null){
              input=input+"\n"+line;
              try {
                  line=br.readLine();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return input;
      }
      private File chooseFile() {
          //Create a file chooser
      final JFileChooser fc = new JFileChooser();
      returnVal = fc.showOpenDialog(fc);
          return fc.getSelectedFile();
      }
      private void kill() {
          System.exit(0);
      }
      public static void main(String[] args) {
          // TODO Auto-generated method stub
         MainGUI test=new MainGUI();
         JFrame f=new JFrame("Tester");
         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         f.setJMenuBar(test.menubar);
         f.setPreferredSize(new Dimension(600,400));
         //f.setUndecorated(true);
         f.add(test);
         f.pack();
         f.setVisible(true);
      }
  </code></pre>
  
  <p>}</p>