Utilizar Jtable sem criar classe!

3 respostas
paulinhohd

Galera, estive olhando os tutorias sobre JTable e TableModel do Brlima e gostaria de saber se tem como eu aplicar o exemplo dele em meu programa, só que sem colocar a classe inteira, pois não preciso de todas funções que tem lá, preciso apenas jogar algumas funções em ações de botões, ou eventos de teclado, tipo quando o cara aperta Page Down, insere uma linha etc…
Isso é possível?Sem delcarar a classe inteira?Apenas declarando a tabela, as variáveis etc???

Valeu!
Fui… 8)

3 Respostas

danieldestro

Sem criar QUAL classe? Explique-se melhor!

paulinhohd
public class SimpleTableModel{
		

		public ArrayList linhas = null;
		public String [] colunas = null;
		private boolean [] colsEdicao;
		/**
		 * Contrutor para a classe, recebendo os dados a serem exibidos
		 * e as colunas que devem ser criadas.
		 */
		public SimpleTableModel(ArrayList dados, String[] colunas, boolean [] edicao){
			setLinhas(dados);
			setColunas(colunas);
			colsEdicao = edicao;
		}

		/**
		 * Retorna o numero de colunas no modelo
		 */
		//*************public int getColumnCount() {return getColunas().length;}

		/**
		 * Retorna o numero de linhas existentes no modelo
		 */
		//*************public int getRowCount() {return getLinhas().size();}

		/**
		 * Obtem o valor na linha e coluna
		 */
		public Object getValueAt(int rowIndex, int columnIndex) {
			// Obtem a linha, que é uma String []
			String [] linha = (String [])getLinhas().get(rowIndex);
			// Retorna o objeto que esta na coluna
			return linha[columnIndex];
		}

		public String[] getColunas() {return colunas;}
		public ArrayList getLinhas() {return linhas;}
		public void setColunas(String[] strings) {colunas = strings;}
		public void setLinhas(ArrayList list) {linhas = list;}
		
		/**
		 * Seta o valor na linha e coluna
		 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
		 */
	/*	public void setValueAt(Object value, int row, int col){
			// Obtem a linha, que é uma String []
			String [] linha = (String [])getLinhas().get(row);
			// Altera o conteudo no indice da coluna passado
			linha[col] = (String)value;
			// dispara o evento de celula alterada
			fireTableCellUpdated(row,col);
		}*/
		/**
		 * Retorna se a celula pode ser editada
		 * @see javax.swing.table.TableModel#isCellEditable(int, int)
		 */
		public boolean isCellEditable(int row, int col){
			return colsEdicao[col];
		}
		
		/**
		 * Adiciona o array na linha
		 */
		public void addRow( String [] dadosLinha){
			getLinhas().add(dadosLinha);
			//return;
		}
		
		/**
		 * Remove a linha pelo indice informado
		 * @param row
		 */
		public void removeRow(int row){
			getLinhas().remove(0);
			// informa a jtable que houve dados deletados passando a 
			// linha reovida
			//fireTableRowsDeleted(row,row);
		}
		
		/**
		 * Remove a linha pelo valor da coluna informada
		 * @param val
		 * @param col
		 * @return
		 */
		public boolean removeRow(String val, int col){
			// obtem o iterator
			Iterator i = getLinhas().iterator();
			int linha = 0;
			// Faz um looping em cima das linhas
			while(i.hasNext()){
				// Obtem as colunas da linha atual
				String[] linhaCorrente = (String[])i.next();
				linha++;
				// compara o conteudo String da linha atual na coluna desejada
				// com o valor informado
				if( linhaCorrente[col].equals(val) ){
					getLinhas().remove(linha);
					// informa a jtable que houve dados deletados passando a 
					// linha removida
				//	fireTableRowsDeleted(linha,linha);
					return true;				
				}
			}
			// Nao encontrou nada
			return false;
		}
		
		/**
		 * Retorna o nome da coluna.
		 * @see javax.swing.table.TableModel#getColumnName(int)
		 */
		public String getColumnName(int col){
			return getColunas()[col];
		}

	}

O código dele é mais ou menos essa classe acima, só que quero apenas extrair algumas funções daí, só que não funcionam.

O que preciso na verdade, é incluir uma JTable dentro de um JScrollPane, que foi o que já consegui e dentro de eventos e funções de botões, irei manipular a Jtable, adicionar linhas, remover, ver se está vazio, etc...

Será que vc não tem nenhum exemplo simplificado disso?

Desde já valeu!

Fui... 8)

danieldestro

Cara, para isso que vc precisa o negócio é usar Table Model mesmo. Pro seu caso, melhor implementar um eu mesmo, com todos os métodos que devem ser implementados.

Dá uma olhada aqui que tem um exemplo de Table Model implementado:
http://www.guj.com.br/posts/list/19105.java
http://www.guj.com.br/posts/list/8966.java

Criado 26 de abril de 2005
Ultima resposta 26 de abr. de 2005
Respostas 3
Participantes 2