Search code examples
javaswinglayout-managergridbaglayoutborder-layout

BorderLayout align


I have a JPanel with a BorderLayout. In the Center of this JPanel I have another JPanel with GridBagLayout. I want to add vertically in the second JPanel some JLabels from top left corner. I need BorderLayout because I need to add my title in the North area.

How can I achieve this?

enter image description here


Solution

  • You don't really need the GridBagLayout, you can use easier BoxLayout:

    public class Popup {
      public static void main(String[] args) {
          JFrame window = new JFrame("Title");
    
          window.add(new JLabel("North", JLabel.CENTER), BorderLayout.NORTH);
          window.add(new JLabel("South", JLabel.CENTER), BorderLayout.SOUTH);
          window.add(new JLabel("West"),  BorderLayout.WEST);
          window.add(new JLabel("East"),  BorderLayout.EAST);
    
          JPanel centerPanel = new JPanel();
          centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));
    
          centerPanel.add(new JLabel("Here"));
          centerPanel.add(new JLabel("Here"));
          centerPanel.add(new JLabel("Here"));
          centerPanel.add(new JLabel("Here"));
    
          window.add(centerPanel, BorderLayout.CENTER);
    
          window.setSize(600, 400);
          window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          window.setVisible(true);
       }
    }