Botões fica um em cima do outro. Pq?

2 respostas
M
Acho que fiz tudo certo, mas os botões ficam um em cima do outro, pq?

package primeira.swing;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class PrimeiraSwing extends JFrame
{
    String nome;
    
    JLabel labelNome;
    JTextField tfNome;
    JLabel labelEndereco;
    JTextField tfendereco;
    
    JButton botaoSair;
    JButton limparBotao;
    
    public PrimeiraSwing()
    {
        super("Swing Java");
        
        GridBagLayout layout = new GridBagLayout();
        GridBagConstraints gbc = new GridBagConstraints();
        
        getContentPane().setLayout(layout);
        
        labelNome = new JLabel("Nome");
        labelEndereco = new JLabel("Endereço");
        
        tfNome = new JTextField(30);
        tfendereco = new JTextField(30);
        
        botaoSair = new JButton("Sair");
        limparBotao = new JButton("Limpar");
        
        gbc.gridy = 0; // linha
        gbc.gridx = 0; // coluna
        gbc.insets = new Insets(5, 5, 5, 5);
        layout.setConstraints(labelNome, gbc);
        getContentPane().add(labelNome);
        
        gbc.gridy = 1; // linha
        gbc.gridx = 0;
        gbc.insets = new Insets(5, 5, 5, 5);
        layout.setConstraints(labelEndereco, gbc);
        getContentPane().add(labelEndereco);
        
        gbc.gridy = 0;
        gbc.gridx = 1;
        gbc.insets = new Insets(5, 5, 5, 5);
        layout.setConstraints(tfNome, gbc);
        getContentPane().add(tfNome);
        
        gbc.gridy = 1; // linha
        gbc.gridx = 1;
        gbc.insets = new Insets(5, 5, 5, 5);
        layout.setConstraints(tfendereco, gbc);
        getContentPane().add(tfendereco);
        
        gbc.gridy = 2; // linha três
        gbc.gridx = 1; // coluna dois
        gbc.insets = new Insets(5, 5, 5, 5);
        //gbc.gridwidth = 1; // ocupa o espaço de três colunas
        layout.setConstraints(botaoSair, gbc);
        getContentPane().add(botaoSair);
        
        gbc.gridy = 2; 
        gbc.gridy = 2; // coluna
        gbc.insets = new Insets(5, 5, 5, 5);
        //gbc.gridwidth = 2;
        layout.setConstraints(limparBotao, gbc);
        getContentPane().add(limparBotao);
        
        this.centralizarTela(); // chamada do método 
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }
    
    private void centralizarTela()
    {
        /* Centralizando a tela
        setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (getWidth() / 2 )),
                  ((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (getHeight() / 2)));
         */
        //setLocationRelativeTo(null);
        setLocation(450, 300);
    }
    
    public static void main(String[] args)
    {
        new PrimeiraSwing();
    }
}

2 Respostas

Marcio_Lima

No trecho abaixo

gbc.gridy = 2;   
        gbc.gridy = 2; // coluna   
        gbc.insets = new Insets(5, 5, 5, 5);   
        //gbc.gridwidth = 2;   
        layout.setConstraints(limparBotao, gbc);   
        getContentPane().add(limparBotao);

GBC.GRIDY = 2 ( EM DUAS LINHAS)

a segunda linha deve referir-se a gbc.gridX

ViniGodoy

Tópico movido para o fórum de interface gráfica.

Criado 7 de agosto de 2012
Ultima resposta 10 de ago. de 2012
Respostas 2
Participantes 3