Проблемы с выравниванием Java Swing (BoxLayout)

Я чрезвычайно новичок в Java Swing, и у меня возникло немало проблем с получением хорошего макета. Я проверил Google, и даже другие ответы на этом сайте, но никакая информация, которую я нахожу, кажется, не решает проблему. Вот результат моих усилий:

Как видите, метка, текстовое поле и кнопка не выровнены. Моя цель, чтобы все они имели одинаковую левую границу, а кнопка и текстовое поле имели одинаковую правую границу, причем каждая из этих границ слева и справа находилась на одинаковом расстоянии от левой и правой стороны. стороны моего окна.

Вот важные части моего кода:

    public void run()
    {
         JFrame frame = new JFrame("Arduino Server");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         InstancePanel = new ServerGUIPanel();
         frame.getContentPane().add(InstancePanel);
         frame.pack();
         frame.setVisible(true);
    }

И, в ServerGUIPanel.java:

    public ServerGUIPanel()
    {
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setPreferredSize(new Dimension(500, 500));
        setBorder(new EmptyBorder(10, 10, 10, 10));



        StatusLabel = new JLabel("STATUS: BOOTUP");
        add(StatusLabel);

        PortField = new JTextField();
        PortField.setPreferredSize(new Dimension(5000, 20));
        PortField.setMaximumSize(PortField.getPreferredSize());
        PortField.setActionCommand("PortChanged");
        add(PortField);

        ConnectionButton = new JButton();
        ConnectionButton.setPreferredSize(new Dimension(5000, 20));
        ConnectionButton.setMaximumSize(ConnectionButton.getPreferredSize());
        ConnectionButton.setActionCommand("ConnectionClicked");
        add(ConnectionButton);
    }

У кого-нибудь есть простое решение этого? Что я здесь не так делаю?

Большое спасибо!

- Джордж Оутс Ларсен

Ответы на вопрос(2)

Ваш ответ на вопрос