Search code examples
javaswinggrid-layout

How to embed a grid layout inside a border layout in java


I have a border layout and I want to add a grid layout to the center section. However, I can't declare a grid and then add my center border. How can I do this?

public Liability_Calculator(String s)
{
    super(s);
    setSize(325,200);
    
    c = getContentPane();
    c.setLayout(new BorderLayout());
    
    //the top label
    total = new JLabel("Total monthly liabilities ", JLabel.CENTER);
    c.add(total, BorderLayout.NORTH);
    
    
    //the grid
    GridLayout grid = new GridLayout(2,2);
    
    text_field1 = new JTextField(7);
    
    //I GET AN ERROR HERE!!!!!!!
    grid.add(text_field1);

    //AND ERROR HERE!!!!!!!!!!!!!
    c.add(grid, BorderLayout.CENTER);
    
    

    
    setVisible(true);
}

Solution

  • You're trying to add a component to a layout, and that simply cannot be done. Instead use a JPanel, give it a GridLayout, and then add the component to the JPanel (acting as the "container" here).

    In general, you will want to nest JPanels with each using the best layout for the GUI, here the inner JPanel using GridLayout and the outer one using BorderLayout. Then you simply add the inner JPanel to the outer one (here your contentPane) in the BorderLayout.CENTER position.