[RESOLVIDO] GridBagLayout não sai do centro

3 respostas
ERVER

Boa noite pessoas,

Estou criando duas classes, uma a PrincipalView, que extende de JFrame e possui um JTabbedPane, com três JPanel dentro dessa JTabbedPane (sendo que cada um desses 3 JPanel é uma outra classe que extende de JPanel, tendo cada um suas próprias GridBagLayout e GridBagConstrant).

PrincipalView.java

package views;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class PrincipalView extends JFrame {
	
	private JTabbedPane painelPrincipal;

	private JPanel painelTabuladoCadastro;
	private JPanel painelTabuladoControle;
	private JPanel paineltabuladoCadastroDepartamentos;
	
	public PrincipalView() {
		super("Sistema de Controle de Usuários");
		this.iniciarComponentes();
	}
	
	private void iniciarComponentes() {
		painelPrincipal = new JTabbedPane();
		
		painelTabuladoCadastro = new PainelCadastro();
		painelTabuladoCadastro.setSize(800, 800);
		painelPrincipal.addTab("Cadastro de Usuários", painelTabuladoCadastro);
		
		painelTabuladoControle = new JPanel();
		painelPrincipal.addTab("Controle de Usuários", painelTabuladoControle);
		
		paineltabuladoCadastroDepartamentos = new JPanel();
		painelPrincipal.addTab("Cadastro de Departamentos", paineltabuladoCadastroDepartamentos);

		
		painelPrincipal.setBounds(50, 50, 100, 100);
		this.add(painelPrincipal);
		this.setSize(800,600);
		this.setResizable(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	
	public static void main(String[] args) {
		PrincipalView principalView = new PrincipalView();
	}
	
}
PainelCadastro.java
package views;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import models.Departamento;
import models.ModeloComboBoxDepartamento;

public class PainelCadastro extends JPanel {

	private JLabel lblNomeUsuario;
	private JLabel lblLogin;
	private JLabel lblPsw;
	private JLabel lblTipoUsuario;
	private JLabel lblDeptoUsuario;
	
	private JTextField txtNomeUsuario;
	private JTextField txtLogin;
	private JPasswordField txtPsw;
	private JComboBox comboTipoUsuario;
	private JComboBox comboDeptoUsuario;
	
	private JButton btnCadastrar;
	
	GridBagConstraints cons = new GridBagConstraints();
	GridBagLayout layout = new GridBagLayout();
	
	public PainelCadastro() {
		super();
		iniciarComponentes();
	}
	
	private void iniciarComponentes() {
		lblNomeUsuario = new JLabel("Nome");
		lblLogin = new JLabel("Login");
		lblPsw = new JLabel("Senha");
		lblTipoUsuario = new JLabel("Tipo de Usuário");
		lblDeptoUsuario = new JLabel("Departamento");
		
		txtNomeUsuario = new JTextField();
		txtNomeUsuario.setColumns(15);
		
		txtLogin = new JTextField();
		txtLogin.setColumns(15);
		
		txtPsw = new JPasswordField();
		txtPsw.setColumns(15);
		comboTipoUsuario = new JComboBox();
		//comboTipoUsuario.setModel(null);
		comboDeptoUsuario = new JComboBox<Departamento>();
		comboDeptoUsuario.setModel(new ModeloComboBoxDepartamento());
		
		btnCadastrar = new JButton("Cadastrar");
		
		this.setLayout(layout);
		
		cons.anchor = GridBagConstraints.WEST;
		cons.insets = new Insets(1, 1, 5, 1);
		
		cons.gridx = 0;
		cons.gridy = 0;
		
		this.add(lblNomeUsuario, cons);
		
		cons.gridx = 1;
		cons.gridy = 0;
		
		this.add(txtNomeUsuario, cons);
		
		cons.gridx = 0;
		cons.gridy = 1;
		
		this.add(lblLogin, cons);
		
		cons.gridx = 1;
		cons.gridy = 1;
		
		this.add(txtLogin, cons);
		
		cons.gridx = 0;
		cons.gridy = 2;
		
		this.add(lblPsw, cons);
		
		cons.gridx = 1;
		cons.gridy = 2;
		
		this.add(txtPsw, cons);
		
		cons.gridx = 0;
		cons.gridy = 3;
		
		this.add(lblTipoUsuario, cons);
		
		cons.gridx = 1;
		cons.gridy = 3;
		
		this.add(comboTipoUsuario, cons);
		
		cons.gridx = 0;
		cons.gridy = 4;
		
		this.add(lblDeptoUsuario, cons);
		
		cons.gridx = 1;
		cons.gridy = 4;
		
		this.add(comboDeptoUsuario, cons);
		
		cons.anchor = GridBagConstraints.LINE_END;
		cons.gridx = 1;
		cons.gridy = 5;
		
		this.add(btnCadastrar, cons);
		
		
	}
}

Acontece que a PainelCadastro fica sempre ao centro da PrincipalView, deixando um enorme espaço nas bordas.
Queria diminuir esse espaço, se alguem tiver alguma dica, agradeço muito. Abraços.

3 Respostas

ERVER

Acho que não consegui explicar muito bem, então tô postando uma imagem pra ficar mais fácil.

Veja como os JTextFields e outros ficam todos no centro. Eu queria, de alguma forma tá colocando eles no canto esquerdo ou mais pra cima, já tentei com o GridBAgConstraints, mas não consegui. Quem puder dar uma luz, eu agradeço muito.

Abraços.

rogeriopaguilar

Acho que assim resolve:

package teste.swing;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class PrincipalView extends JFrame {
	
	private JTabbedPane painelPrincipal;

	private JPanel painelTabuladoCadastro;
	private JPanel painelTabuladoControle;
	private JPanel paineltabuladoCadastroDepartamentos;
	
	public PrincipalView() {
		super("Sistema de Controle de Usuários");
		this.iniciarComponentes();
	}
	
	private void iniciarComponentes() {
		painelPrincipal = new JTabbedPane();

		painelTabuladoCadastro = new PainelCadastro();
		
		JPanel containerPainelTabulado = new JPanel(new GridBagLayout());
		GridBagConstraints gc = new GridBagConstraints();
		gc.anchor =GridBagConstraints.NORTHWEST;
		gc.weightx = 10;
		gc.weighty = 10;
		
		containerPainelTabulado.add(painelTabuladoCadastro, gc);
		
		//painelTabuladoCadastro.setSize(800, 800);
		//painelPrincipal.addTab("Cadastro de Usuários", painelTabuladoCadastro);
		painelPrincipal.addTab("Cadastro de Usuários", containerPainelTabulado);
		
		
		painelTabuladoControle = new JPanel();
		painelPrincipal.addTab("Controle de Usuários", painelTabuladoControle);
		
		paineltabuladoCadastroDepartamentos = new JPanel();
		painelPrincipal.addTab("Cadastro de Departamentos", paineltabuladoCadastroDepartamentos);

		
		painelPrincipal.setBounds(50, 50, 100, 100);
		this.add(painelPrincipal);
		this.setSize(800,600);
		this.setResizable(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	
	public static void main(String[] args) {
		PrincipalView principalView = new PrincipalView();
	}
	
}
ERVER

Olá rogeriopaguilar,

Exatamente isso! Muito obrigado, mesmo!

Abração.

Criado 19 de outubro de 2012
Ultima resposta 19 de out. de 2012
Respostas 3
Participantes 2