Box

Estou utilizando um componente Box para organizar meus compontes GUI mas não estou conseguindo colocar um botão embaixo do outro por exemplo… estou usando o metodo create HorizontalBox que cria um box e organiza os componentes da esquerda para direita na ordem que são colocados
se eu quizer colocar um componente embaixo do outro como eu faço…?
vou colocar meu ódigo logo abaixo:

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

 
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.xml.bind.Marshaller.Listener;


public class CriptografiaGUI  extends JFrame implements ActionListener
{
	/**
	 * 
	 */
	 
	private Color cor;
	private JButton botao;
	private JButton botao2;//este botão que quero colocar embaxo do 1
	private JLabel texto1;
	private JTextArea textArea1;
	private JTextArea textArea2;
	Criptografia chama = new Criptografia();
	
	public CriptografiaGUI(String titulo)
	{
		super(titulo);
		 
		
	 
		Box box =Box.createHorizontalBox();
		
		this.texto1=new JLabel("Trabalho de Mátematica Discreta");
		add(this.texto1);
		
		this.textArea1 = new JTextArea(500,500);
		this.textArea1.setBackground(cor.yellow);
		
		box.add(new JScrollPane(this.textArea1));
		
		this.textArea2 = new JTextArea(500,500);
		this.textArea2.setEditable(false);
		this.textArea2.setBackground(cor.yellow);
		
		this.botao2 = new JButton("<<Obter código");
		 
		
		 
		
		this.botao=new JButton("Criptografar >>");
		this.botao.addActionListener(this);
		box.add(this.botao);
		
		
		
		box.add(new JScrollPane(this.textArea2));
		add(box);
		 
		
 
		getContentPane().setBackground(cor.gray);
		setVisible(true);
		setSize(550, 300);
		setResizable(false);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		
	}
	
	public void actionPerformed(ActionEvent event) 
	{
	          if(event.getActionCommand().equals("Criptografar >>"))
	          {
	        	 String pega;
	        	 
	        	 if(this.textArea1.getText().equals(""))
	        	 {
	        		 this.textArea2.setText("Não foi digitado nenhum caracter ");
	        		 setLimpaTextArea1();
	        		
	        	 }
	        	 else if(!(this.textArea1.getText().equals("")))
	        	 {
	        		
	        		 pega=this.textArea1.getText();
	        		 setLimpaTextArea1();
	        		 this.textArea2.setText(pega);
	        	 }
	        	 
	        	 
 
	          }
	}
	
	
	public void setLimpaTextArea1()
	{
		this.textArea1.setText("");
	}
	
	public void setLimpaTextArea2()
	{
		this.textArea2.setText("");
	}
	

	public static void main(String args[])
	{
		new CriptografiaGUI("Trabalho de Matématica discreta");
	}

}