Problemas com JTable + GridBagLayout

0 respostas
M

Boa tarde pessoal
Estou tentando fazer uma pequena aplicação de controle de contas para aprender JTable, JFrame entre outras.
Quando executo meu código o JTable apacere somente em uma linha não do tamaho que defino.
Segue abaixo o código.

import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class MovimentoForm extends JFrame 
{
	private int largura = 600;
	private int altura =400;
	
	private JButton botaoCancela;
	private JButton botaoInsere;
	private JButton botaoDeleta;
	private JButton botaoSalvar;
	
	private JLabel labelData;
	private JLabel labelLinha1;
	private JLabel labelLinha2;
	private JLabel labelDepart;
	private JComboBox comboDepart;
	private JTextField textValor;
	private JTable tabela;
	private DefaultTableModel modelo;
	private JScrollPane scroll;
		
	private GridBagLayout layout;
	private GridBagConstraints constraints;
	
	public MovimentoForm()
	{
		initComponents("16/09/2006");
	}
	
	public MovimentoForm(String data)
	{
		initComponents(data);
	}
	
	public void initComponents(String data)
	{
		setTitle("Cadastro de Movimento por data");
		layout = new GridBagLayout();
		getContentPane().setLayout(layout);
		constraints = new GridBagConstraints();
		
		botaoCancela = new JButton("Cancelar");
		botaoInsere = new JButton("Inserir linha");
		botaoDeleta = new JButton("Deletar linha");
		botaoSalvar = new JButton("Salvar");
		
		labelData = new JLabel("Data: " + data);
		labelLinha1 = new JLabel("");
		labelLinha2 = new JLabel("");
		labelDepart = new JLabel("Departamento: ");
		comboDepart = new JComboBox();
		textValor = new JTextField();
		
		String[][] dados = new String [][]{
					{"SP","Sao Paulo"},
					{"RJ","Rio de Janeiro"},
					{"RN","Rio Grande do Norte"},
					{"PR","Parana"}
					};
		String[] colunas = new String []{"Estado","Cidade"};
		
		modelo = new DefaultTableModel(dados, colunas);
		tabela = new JTable(modelo);
		scroll = new JScrollPane(tabela);
		scroll.setSize(new Dimension(250,200));
		
		
		constraints.fill = GridBagConstraints.BOTH;
		constraints.weightx = 5;
		addComponent(labelLinha1,0,1,3,1);
		addComponent(labelData,1,0,1,1);
		addComponent(labelDepart,2,0,1,1);
		
		addComponent(botaoInsere,3,0,1,1);
		addComponent(botaoDeleta,3,1,1,1);
		addComponent(botaoSalvar,3,2,1,1);
		addComponent(botaoCancela,3,3,1,1);
		
		addComponent(scroll,4,0,5,1);
		
		botaoCancela.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt)
			{
				try
				{
					dispose();
				}
				catch(Exception ex)
				{
					JOptionPane.showMessageDialog(null, ex.getMessage(), "Aviso", JOptionPane.ERROR_MESSAGE);
				}
			}
		});
		
		botaoInsere.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt)
			{
				try
				{
					int numLinhas = modelo.getColumnCount();
					Vector dados1 = new Vector();
					
					modelo.insertRow(4, dados1);
				}
				catch(Exception ex)
				{
					JOptionPane.showMessageDialog(null, ex.getMessage(), "Aviso", JOptionPane.ERROR_MESSAGE);
				}
			}
		});
		
		
		
		pack();
		setSize(largura,altura);
		setVisible(true);
		
		//setResizable(false);
		Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation((screensize.width-largura)/2,(screensize.height-altura)/2);
	}
	
	private void addComponent(Component component,int row,int column,int width,int height)
	{
		constraints.gridx = column;
		constraints.gridy = row;
		constraints.gridwidth = width;
		constraints.gridheight = height;
		constraints.insets = new Insets(4,4,4,4);
		layout.setConstraints( component, constraints );
		getContentPane().add( component );
	}
	
	public static void main(String args[]) 
	{
		MovimentoForm mf = new MovimentoForm();
	}

}

Você podem me ajudar?

Criado 17 de setembro de 2006
Respostas 0
Participantes 1