GridBagLayout não obedece

Olá a todos,
Estou tentando criar uma interface com um grid 3x3, que faça o seguinte:

Na primeira linha, tenha uma área de texto que ocupe 2 colunas, e uma lista de participantes que ocupe a última coluna
Na segunda linha, um TextField para mensagem, um label, e um botão (cada um, ocupando uma coluna)
E na terceira linha, um TextField que ocupe 2 colunas, e um botão ocupando a última coluna.

Utilizei o tutorial aqui do GUJ sobre GridBagLayout, mas o comportamento da aplicação não está obedecendo aos comandos (utilizo Java 1.5).

Será que alguém sabe o problema que pode estar acontecendo? Anexo o código abaixo!

Muito obrigado a todos!

Obs: Na visualização aqui, o código fonte apareceu todo sem formatação de identação, mesmo eu tendo o colocado entre as tags de código (tenho certeza que ele está inserido corretamente).


import javax.swing.*;
import java.awt.*;


public class TesteInterface extends JFrame {
	public TesteInterface()
	{
		super("Teste (Servidor)");
		
		JPanel panelChat = new JPanel();
		JTextField fieldChat1 = new JTextField();	// Caixa de mensagens do chat
		JTextField fieldChat2 = new JTextField();	// Lista de participantes
		JTextField fieldChat3 = new JTextField();	// Box de mensagem normal
		JTextField fieldChat4 = new JTextField();	// Box de mensagem urgente
		JLabel labelChat1 = new JLabel("Para quem");// Combo de destino da mensagem
		JButton buttonChatSend = new JButton("Enviar");
		JButton buttonChatUrgentSend = new JButton("Urgente");
		
		GridBagLayout layout = new GridBagLayout();        
		GridBagConstraints c = new GridBagConstraints();
        panelChat.setLayout(layout);
		
        c.fill = GridBagConstraints.BOTH;
        c.gridy = 0; // primeira linha
        c.gridx = 0; // primeira coluna
        c.weightx = 1;
        c.gridwidth = 2; // Ocupar duas colunas
        layout.setConstraints(fieldChat1, c);
        panelChat.add(fieldChat1);

        c.gridy = 0; 
        c.gridx = 2;
        layout.setConstraints(fieldChat2, c);
        panelChat.add(fieldChat2);
        
        c.gridy = 1; 
        c.gridx = 0; 
        layout.setConstraints(fieldChat3, c);
        panelChat.add(fieldChat3);
        
        c.gridy = 1; 
        c.gridx = 1; 
        layout.setConstraints(labelChat1, c);
        panelChat.add(labelChat1);
        
        c.gridy = 1; 
        c.gridx = 2; 
        layout.setConstraints(buttonChatSend, c);
        panelChat.add(buttonChatSend);
        
        c.gridy = 2; 
        c.gridx = 0; 
        c.gridwidth = 2; // Ocupar duas colunas
        layout.setConstraints(fieldChat4, c);
        panelChat.add(fieldChat4);
        
        c.gridy = 2; 
        c.gridx = 2; 
        layout.setConstraints(buttonChatUrgentSend, c);
        panelChat.add(buttonChatUrgentSend);
		
		getContentPane().add(panelChat);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setSize(800, 600);
		setVisible(true);
	}
	
	public static void main(String[] args)
	{
		TesteInterface ti = new TesteInterface();
	}
}

Como a instancia do GridBagConstraints vai ser reaproveitada para todos os componentes vc precisar resetar o valor gridwidth para o segundo elemento (c.gridwidth = 1).

Falou.

Era isso mesmo, valeu pela dica :wink: