GridBagLayout[RESOLVIDO]

Olá, bom dia.

Estou fazendo uns testes com o GridBagLayout e gostaria de saber se posso indicar posições dos elementos apenas pelas coordenadas :

CENTER. NORTH, EAST, exemplo tenho 3 JLabels, qual a sintaxe utilizada para informar estas posições para cada uma delas.

Bom dia Ismarco.

Negativo. O GridBaLayout voce informa quatro tipo de coordenadas númericas da classe GridBagConstraints que são:

gridx = Posição da coluna que o componente ocupa.

gridy = Posição da linha que o componente ocupa.

gridwidth = Quantidade de colunas que o componente ocupa.

gridheight = Quantidade de linhas que o componente ocupa.

Para voce ter uma idéia de como se configura o GridBagLayout, eu criei uma classe da qual e a utilizo bastante, a classe abaixo:

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JPanel;

public class ContentLayout extends JPanel {

    // Definição do Layout e das restrições do Layout
    private GridBagLayout layout;
    private GridBagConstraints constraints;
    // Definição das constantes
    public final int horizontal = GridBagConstraints.HORIZONTAL;
    public final int vertical = GridBagConstraints.VERTICAL;
    public final int both = GridBagConstraints.BOTH;
    public final int remainder = GridBagConstraints.REMAINDER;
    public final int relative = GridBagConstraints.RELATIVE;
    

    //Construtor do objeto (como o mesmo nome da classe)
    public ContentLayout(){
       layout = new GridBagLayout();
       setLayout(layout);
       constraints = new GridBagConstraints();
       constraints.weightx = 1;
       constraints.weighty = 1;
       constraints.insets = new Insets(0,0,0,0);
    }

    public void addComponent(Component comp, int row, int column, int width, int height, int fill){
        constraints.fill = fill;
        constraints.gridx = column;
        constraints.gridy = row;
        constraints.gridwidth = width;
        constraints.gridheight = height;
        layout.setConstraints(comp, constraints);
        add(comp);
    }
    
    public void addComponent(Component comp, int fill, int width){
        constraints.fill = fill;
        constraints.gridwidth = width;
        constraints.weightx = 1;
        constraints.weighty = 1;
        layout.setConstraints(comp, constraints);
        add(comp);
    }

    public void setDimension(int w, int h){
        size = new Dimension(w,h);
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
    }

Voce deve utilizar esta classe desta maneira:


  public class MinhaClasse extends JFrame {

        public MinhaClasse(){
                .......
                setContentPane(getContainer());
                ......
        }

        public ContentLayout getContainer(){
                  ContentLayout layout = new ContentLayout();
                  layout.setDimension(700,220);
 
                  /*Label nome ocupando espaço na linha 0, coluna 0
                              ocupando uma coluna e um linha respectivamente
                              de modo a ocupar toda a célula no sentido horizontal
                              caso haja espaço na célula.  */
                  JLabel lblNome = new JLabel("Nome");
                  layout.addComponent(lblNome, 0,0,1,1,layout.horizontal);

                  ......
                  .....
        
                 // Retorno de tela
                 return layout;
    }
 }

Vale lembrar que as constantes Horizontal, Vertical e Both servem para reajustar o componente na célula, caso haja espaço na mesma, de maneira horizontal, vertical ou ambas (both)

Entendi.
Muito obrigado por compartilhar sua experiência.

Valeu!