I have a problem with text field and combo box components which are set on the east panel. For some reason, when I added Box layout to arrange them by Y, some of the components listed above, doesn't align and scale size properly with buttons, just as they should be.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
/**
 *
 * @author Isaac
 */
public class Test2 extends JFrame {
    private JButton addNewColumnButton;
    private JButton calculateColumnButton;
    private JButton resultButton;
    private JLabel textLabel;
    private JTextField columnField;
    private JTextField resultField;            
    private JComboBox columnListCB;
    private JTable table;
    private String[] tableCols = {"Fisrt Column", "Second Column", "Third Column", "", "", "", "", ""};
    private Object[][] tableRows = {
            {true, null, null, null, null, null, null, null},
            {true, null, null, null, null, null, null, null},
            {true, null, null, null, null, null, null, null},
            {true, null, null, null, null, null, null, null},
            {true, null, null, null, null, null, null, null},
            {true, null, null, null, null, null, null, null},
            {true, null, null, null, null, null, null, null},
            {true, null, null, null, null, null, null, null}
    };
    public Test2() {
        this.setSize(new Dimension(600, 280)); 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.init();
        this.add(getUIPanel());
        this.pack();
        this.setVisible(true);
    }
    private JPanel getUIPanel() {
        JPanel panel = new JPanel(new BorderLayout());
        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        panel.setBackground(Color.blue);
        JPanel center = new JPanel();
        center.add(table);
        JPanel eastPanel = new JPanel();
        eastPanel.setBackground(Color.MAGENTA);
            Box eastPanelBox = Box.createVerticalBox();
            eastPanelBox.add(addNewColumnButton);
            eastPanelBox.add(Box.createVerticalStrut(14));
            eastPanelBox.add(columnField);
            eastPanelBox.add(Box.createVerticalStrut(5));
            eastPanelBox.add(columnListCB);
            eastPanelBox.add(Box.createVerticalStrut(5));
            eastPanelBox.add(calculateColumnButton);
        eastPanel.add(eastPanelBox);
        JPanel southPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 5));
        southPanel.setBackground(Color.green);
            southPanel.add(resultButton);
            southPanel.add(textLabel);
            southPanel.add(resultField);
        panel.add(center, BorderLayout.WEST);
        panel.add(southPanel, BorderLayout.SOUTH);
        panel.add(eastPanel, BorderLayout.EAST); 
        return panel;
    }
    private void init() {
        final int COMPONENT_WIDTH = 130;
        final int COMPONENT_HEIGHT = 25;
        table = new JTable(tableRows, tableCols);
        addNewColumnButton = new JButton("New Column");
        addNewColumnButton.setPreferredSize(new Dimension(COMPONENT_WIDTH, COMPONENT_HEIGHT));
        columnField = new JTextField();
        columnField.setPreferredSize(new Dimension(COMPONENT_WIDTH, COMPONENT_HEIGHT));
        columnListCB = new JComboBox(tableCols);
        columnListCB.setPreferredSize(new Dimension(COMPONENT_WIDTH, COMPONENT_HEIGHT));
        calculateColumnButton = new JButton("Calculate Column");
        calculateColumnButton.setPreferredSize(new Dimension(COMPONENT_WIDTH, COMPONENT_HEIGHT));
        resultButton = new JButton("Calculate");
        calculateColumnButton.setPreferredSize(new Dimension(COMPONENT_WIDTH, COMPONENT_HEIGHT));
        textLabel = new JLabel("Result:");
        resultField = new JTextField(); 
        resultField.setPreferredSize(new Dimension(COMPONENT_WIDTH / 2, COMPONENT_HEIGHT));
    }
    public static void main(String[] args) {
        new Test2();
    }
}
