Duvida com Jtable e JtableModel

0 respostas
K

Estou com um problema para implementar o jtable e o Jtablemodel, estou usando usando um tutorial deste site mesmo, porém não estou conseguindo chamar a jtable( preciso usar o jscrolbar mas mesmo sem ele não funciona).

Esta é minha classe dos usuarios:

public class Usuarios {
	
	
	private int id;
	private String usuario;
	private String rg;
	private String cpf;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public String getRg() {
		return rg;
	}
	public void setRg(String rg) {
		this.rg = rg;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	

}

Esta é a classe modelo da Jtable:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class UsuariosTablemodel extends AbstractTableModel {

	
	/* Lista de Sócios que representam as linhas. */
	private List<Usuarios> linhas;
	
	
	/* Array de Strings com o nome das colunas. */
	private String[] colunas = new String[] {
			"ID", "Nome", "RG", "CPF"};
	
	
	/* Cria um SocioTableModel vazio. */
	public UsuariosTablemodel() {
		linhas = new ArrayList<Usuarios>();
	}
	
	
	/* Cria um SocioTableModel carregado com
	 * a lista de sócios especificada. */
	public UsuariosTablemodel(List<Usuarios> listaDeUsuarios) {
		linhas = new ArrayList<Usuarios>(listaDeUsuarios);
	}
	
	
	/* Retorna a quantidade de colunas. */
	
	
	
	
	/* Retorna a quantidade de linhas. */
	@Override
	public int getRowCount() {
		// Retorna o tamanho da lista de sócios.
		return linhas.size();
	}

	@Override
	public int getColumnCount() {
		// Está retornando o tamanho do array "colunas".
		// Mas como o array é fixo, vai sempre retornar 4.
		return colunas.length;
	}

	

	
	/* Retorna o nome da coluna no índice especificado.
	 * Este método é usado pela JTable para saber o texto do cabeçalho. */
	@Override
	public String getColumnName(int columnIndex) {
		// Retorna o conteúdo do Array que possui o nome das colunas
		// no índice especificado.
		return colunas[columnIndex];
	}
	
	
	 public Object getValueAt(int rowIndex, int columnIndex) {
		// Pega o sócio da linha especificada.
		Usuarios usu = linhas.get(rowIndex);

		// Retorna o campo referente a coluna especificada.
		// Aqui é feito um switch para verificar qual é a coluna
		// e retornar o campo adequado. As colunas são as mesmas
		// que foram especificadas no array "colunas".
		switch (columnIndex) {
		case 0: // Primeira coluna é o id.
			return usu.getId();
		case 1: // Segunda coluna é o nome.
			return usu.getUsuario();
		case 2: // Terceira coluna é o rg.
			return usu.getRg();
		case 3: // Quarta coluna cpf.
			return usu.getCpf();
		default:
			// Se o índice da coluna não for válido, lança um
			// IndexOutOfBoundsException (Exceção de índice fora dos limites).
			// Não foi necessário verificar se o índice da linha é inválido,
			// pois o próprio ArrayList lança a exceção caso seja inválido.
			throw new IndexOutOfBoundsException("columnIndex out of bounds");
		}
	}
	
	 /* Seta o valor da célula especificada
		 * pelos índices da linha e da coluna.
		 * Aqui ele está implementado para não fazer nada,
		 * até porque este table model não é editável. */
		public void setValueAt(Object aValue, int rowIndex, int columnIndex) {};

		/* Retorna um valor booleano que define se a célula em questão
		 * pode ser editada ou não.
		 * Este método é utilizado pela JTable na hora de definir o editor da célula.
		 * Neste caso, estará sempre retornando false, não permitindo que nenhuma
		 * célula seja editada. */
		
		
		
		public boolean isCellEditable(int rowIndex, int columnIndex) {
			return false;
		}
		
		
		
		/* Retorna o sócio da linha especificada. */
		public Usuarios getUsuario(int indiceLinha) {
			return linhas.get(indiceLinha);
		}
		
		
		
		/* Adiciona um registro. */
		public void addSocio(Usuarios usu) {
			// Adiciona o registro.
			linhas.add(usu);
			
			
			// Pega a quantidade de registros e subtrai um para achar
			// o último índice. É preciso subtrair um, pois os índices
			// começam pelo zero.
			int ultimoIndice = getRowCount() - 1;

			// Reporta a mudança. O JTable recebe a notificação
			// e se redesenha permitindo que visualizemos a atualização.
			fireTableRowsInserted(ultimoIndice, ultimoIndice);
		}
		
		
		
		
		public void removeUsuario(int indiceLinha) {
			// Remove o sócio da linha especificada.    	
			linhas.remove(indiceLinha);

			// Reporta a mudança. O JTable recebe a notificação
			// e se redesenha permitindo que visualizemos a atualização.
			fireTableRowsDeleted(indiceLinha, indiceLinha);
		}
		
		
		/* Adiciona uma lista de sócios ao final dos registros. */
		public void addListaUsuarios(List<Usuarios> usu) {
			// Pega o tamanho antigo da tabela.
			int tamanhoAntigo = getRowCount();

			// Adiciona os registros.
			linhas.addAll(usu);

			// Reporta a mudança. O JTable recebe a notificação
			// e se redesenha permitindo que visualizemos a atualização.
			fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
		}
	
		public void limpar() {
			// Remove todos os elementos da lista de sócios.
			linhas.clear();

			// Reporta a mudança. O JTable recebe a notificação
			// e se redesenha permitindo que visualizemos a atualização.
			fireTableDataChanged();
		}

		
		
		/* Verifica se este table model está vazio. */
		public boolean isEmpty() {
			return linhas.isEmpty();
		}
	
	
}

Aqui é a classe JinternalFrame onde eu vo chamar esta jtable abaixo do formulario.Porém mesmo seguindo o ex que possuo não estou conseguindo.

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JInternalFrame;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JScrollBar;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JList;

public class Cadinterno extends JInternalFrame {
	private JTextField txusuario;
	private JTextField txrg;
	private JTextField txcpf;
	
	

	/**
	 * Launch the application.
	 */
	
	

	/**
	 * Create the frame.
	 */
	public Cadinterno() {
		setClosable(true);
		setResizable(true);
		setMaximizable(true);
		setBounds(100, 100, 663, 711);
		
		JLabel lblUsuario = new JLabel("Usuario");
		lblUsuario.setFont(new Font("Dialog", Font.BOLD, 17));
		
		txusuario = new JTextField();
		txusuario.setFont(new Font("Dialog", Font.PLAIN, 17));
		txusuario.setColumns(10);
		
		JLabel lblRg = new JLabel("RG");
		lblRg.setFont(new Font("Dialog", Font.BOLD, 17));
		
		txrg = new JTextField();
		txrg.setFont(new Font("Dialog", Font.PLAIN, 17));
		txrg.setColumns(10);
		
		JLabel lblCpf = new JLabel("CPF");
		lblCpf.setFont(new Font("Dialog", Font.BOLD, 17));
		
		txcpf = new JTextField();
		txcpf.setFont(new Font("Dialog", Font.PLAIN, 17));
		txcpf.setColumns(10);
		
		JButton btnCadastra = new JButton("Cadastra");
		
		JButton btnConsulta = new JButton("Consulta");
		btnConsulta.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				//Consulta
				
				usuario usu2= new usuario();
				Usuarios usu = new Usuarios();
				usu.setUsuario(txusuario.getText());
				usu.setRg(txrg.getText());
				usu.setCpf(txcpf.getText());
				
				Vector<Usuarios> resultado	= usu2.consultaUsu(usu);
				
				System.out.println(resultado.size());
				
			}
		});
		
		JButton btnAtiva = new JButton("Ativa");
		
		JButton btnSair = new JButton("Sair");
		btnSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				
				dispose();
			}
		});
		
		
		
		
		
		
		
		
		
		
		
		
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.TRAILING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
						.addGroup(groupLayout.createSequentialGroup()
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
								.addComponent(lblUsuario, GroupLayout.PREFERRED_SIZE, 73, GroupLayout.PREFERRED_SIZE)
								.addComponent(lblRg, GroupLayout.PREFERRED_SIZE, 47, GroupLayout.PREFERRED_SIZE)
								.addComponent(lblCpf))
							.addPreferredGap(ComponentPlacement.RELATED)
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
								.addComponent(txcpf, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
								.addComponent(txrg, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
								.addComponent(txusuario, GroupLayout.PREFERRED_SIZE, 360, GroupLayout.PREFERRED_SIZE)))
						.addGroup(groupLayout.createSequentialGroup()
							.addComponent(btnCadastra)
							.addPreferredGap(ComponentPlacement.UNRELATED)
							.addComponent(btnConsulta)
							.addPreferredGap(ComponentPlacement.UNRELATED)
							.addComponent(btnAtiva, GroupLayout.PREFERRED_SIZE, 88, GroupLayout.PREFERRED_SIZE)
							.addPreferredGap(ComponentPlacement.RELATED)
							.addComponent(btnSair, GroupLayout.PREFERRED_SIZE, 91, GroupLayout.PREFERRED_SIZE)))
					.addContainerGap(196, Short.MAX_VALUE))
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap(451, Short.MAX_VALUE)
				//	.addComponent(scrollBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
					.addGap(185))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGap(44)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(btnCadastra)
						.addComponent(btnConsulta)
						.addComponent(btnAtiva)
						.addComponent(btnSair))
					.addPreferredGap(ComponentPlacement.UNRELATED)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblUsuario)
						.addComponent(txusuario, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblRg)
						.addComponent(txrg, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(18)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(txcpf, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
						.addComponent(lblCpf))
					.addGap(55)
					//.addComponent(scrollBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
					.addContainerGap(374, Short.MAX_VALUE))
		);
		getContentPane().setLayout(groupLayout);
		
	}
}

O sistema possui a tela de login e a tela que chama este jinternalframe, caso algué queira posto.

Desde já agradeço a ajuda.

Criado 16 de outubro de 2012
Respostas 0
Participantes 1