SpringLayout - Utilização

Boa Noite a todos!
sou novo aqui no forum, apensar de consulta-lo bastante para aprender, esse eh meu primeiro post
Estou estudando o SpringLayout, estive olhando a API, no How to use, tem o seguinte código:

private static SpringLayout.Constraints getConstraintsForCell(
                                            int row, int col,
                                            Container parent,
                                            int cols) {
    SpringLayout layout = (SpringLayout) parent.getLayout();
    Component c = parent.getComponent(row * cols + col);
    return layout.getConstraints(c);
}


public static void makeCompactGrid(Container parent,
                                   int rows, int cols,
                                   int initialX, int initialY,
                                   int xPad, int yPad) {
    SpringLayout layout;
    try {
        layout = (SpringLayout)parent.getLayout();
    } catch (ClassCastException exc) {
        System.err.println("The first argument to makeCompactGrid must use SpringLayout.");
        return;
    }

    //Align all cells in each column and make them the same width.
    Spring x = Spring.constant(initialX);
    for (int c = 0; c < cols; c++) {
        Spring width = Spring.constant(0);
        for (int r = 0; r < rows; r++) {
            width = Spring.max(width,
                               getConstraintsForCell(r, c, parent, cols).
                                   getWidth());
        }
        for (int r = 0; r < rows; r++) {
            SpringLayout.Constraints constraints =
                    getConstraintsForCell(r, c, parent, cols);
            constraints.setX(x);
            constraints.setWidth(width);
        }
        x = Spring.sum(x, Spring.sum(width, Spring.constant(xPad)));
    }

    //Align all cells in each row and make them the same height.
    Spring y = Spring.constant(initialY);
    for (int r = 0; r < rows; r++) {
        Spring height = Spring.constant(0);
        for (int c = 0; c < cols; c++) {
            height = Spring.max(height,
                                getConstraintsForCell(r, c, parent, cols).
                                    getHeight());
        }
        for (int c = 0; c < cols; c++) {
            SpringLayout.Constraints constraints =
                    getConstraintsForCell(r, c, parent, cols);
            constraints.setY(y);
            constraints.setHeight(height);
        }
        y = Spring.sum(y, Spring.sum(height, Spring.constant(yPad)));
    }

    //Set the parent's size.
    SpringLayout.Constraints pCons = layout.getConstraints(parent);
    pCons.setConstraint(SpringLayout.SOUTH, y);
    pCons.setConstraint(SpringLayout.EAST, x);
}

não estou conseguindo entender como ele faz o posicionamento dos componentes na tela.
Estou querendo fazer uma tela, com alguns JLabels e JTextFields, e ao maximar a tela, os componentes se ‘expandão’ junto com a tela, para não ficar aquele espaço vago e os componentes staticos.
Alguém tem algum material, sem ser a API, para o SpringLayout? um exemplo? ou uma explicação de como fazer?
agradeço desde ja!

Olá amigo, aqui segue um exemplo mais simples de uma aplicação que eu fiz, as variáveis são:

SpringLayout layout = new SpringLayout();
Container cp;    	
JPanel main = new JPanel();	
JButton editar =  new JButton(" Editar ");
JButton cadastrar =  new JButton(" Cadastrar ");
JScrollPane propriedades = new JScrollPane();
JScrollPane glebas = new JScrollPane();
        	
JScrollPane solicitantes = new JScrollPane(Tsolicitantes);
solicitantes.setPreferredSize(new Dimension(370, 350));
        
propriedades.setPreferredSize(new Dimension(320, 230));	
glebas.setPreferredSize(new Dimension(320, 230));        

e o código que posiciona é:

cp = getContentPane();
main.setLayout(layout);
                       
main.add(solicitantes);
layout.putConstraint(SpringLayout.WEST, solicitantes, 30, SpringLayout.WEST, main);

layout.putConstraint(SpringLayout.NORTH, solicitantes, 120, SpringLayout.NORTH, main);

main.add(propriedades);
layout.putConstraint(SpringLayout.WEST, propriedades, 60, SpringLayout.EAST, solicitantes);

layout.putConstraint(SpringLayout.NORTH, propriedades, 30, SpringLayout.NORTH, main);
        
main.add(glebas);

layout.putConstraint(SpringLayout.WEST, glebas, 60, SpringLayout.EAST, solicitantes);

layout.putConstraint(SpringLayout.NORTH, glebas, 30, SpringLayout.SOUTH, propriedades);
        
main.add(editar);
layout.putConstraint(SpringLayout.WEST, editar, 115, SpringLayout.WEST, main);

layout.putConstraint(SpringLayout.NORTH, editar, 15, SpringLayout.SOUTH, solicitantes);
        
main.add(cadastrar);
layout.putConstraint(SpringLayout.WEST, cadastrar, 40, SpringLayout.EAST, editar);

layout.putConstraint(SpringLayout.NORTH, cadastrar, 15, SpringLayout.SOUTH, solicitantes);
        
//Conteúdo do painel main	        
cp.add(main);

é assim: …(SpringLayout.(lado: norte, sul, lest ou oeste), nome_do_objeto1, (numero de pixels), SpringLayout.(lado: norte, sul, lest ou oeste), nome_do_objeto2_em_relação);

objeto 1 = quem.
objeto 2 = em relação a quem

espero que tenha ajudado.