lá pessoal
Estou usando o modelo orientado por vcs do GUJ e estou com 3 problemas no meu modelo na JTable.
Primeiro: Quando chamo o meu Jtable ele aparece só que as colunas estão com a mesma largura e quero redimensiona-las. Como fazer isso dentro desse novo modelo?
Segundo: O Scroll não aparece quando chamo a minha jTable. preciso resolver estes 2 problemas se vcs puderem me ajudar agradeceria muito.
Terceiro: As teclas setas não funcionam neste meu modelo. Qual seria o metodo para este procedimento dentro da minha jtable(modelo).O codigo está a baixo:
A parte da chamada do meu modelo:
private void preencheTbm(){
PrecoDao dao = null ;
try {
dao = new PrecoDao();
PrecoTableModel minha = new PrecoTableModel(dao.listAll());
// peguei na internet esse procedimento mas não tá funcionando
// [b] tentei fazer desse modo e não funcionou[/b]
// defineRenderers();
/* jTPreco.getColumnModel().getColumn(0).setPreferredWidth(50);
jTPreco.getColumnModel().getColumn(1).setPreferredWidth(150);
jTPreco.getColumnModel().getColumn(2).setPreferredWidth(50);
jTPreco.getColumnModel().getColumn(3).setPreferredWidth(250);
jTPreco.getColumnModel().getColumn(4).setPreferredWidth(50);
jTPreco.getColumnModel().getColumn(5).setPreferredWidth(150);*///
// [b]esta parte funciona menos o scroll e as setas[/b]
jTPreco.setPreferredSize(new java.awt.Dimension(800, 160));
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS;
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS;
JScrollPane scroller = new JScrollPane(jTPreco, v, h);
jScrollPane2.add(scroller );
jTPreco.setModel(minha);
jScrollPane2.setViewportView(jTPreco);
// getContentPane().add( jScrollPane2 );
} catch (SQLException ex) {
Logger.getLogger(jIFProtese.class.getName()).log(Level.SEVERE, null, ex);
}
try {
dao.closeConnection();
} catch (SQLException ex) {
Logger.getLogger(jIFProtese.class.getName()).log(Level.SEVERE, null, ex);
}
}
//Meu modelo de Preço está funcionando bem, menos os 3 problemas citados:
package TableModels;
import java.util.ArrayList;
import java.util.List;
import javax.swing.SwingConstants;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import modelo.Preco;
import modelo.Protese;
import modelo.TipodePreco;
/**
*
* @author Octacilio
*/
public class PrecoTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
/* Lista de Preco que representam as linhas. */
private List<Preco> linhas;
/* Array de Strings com o nome das colunas. */
private String[] colunas = new String[]{
"Id.", "Tipo de Preço ", "Id.", "Descrição da Prótese ", "Id.", "Valor"};
/* Cria um PrecoTableModel vazio. */
public PrecoTableModel() {
System.out.println("passei na PrecoTableModel - inicio!");
linhas = new ArrayList<Preco>();
}
/* Cria um PrecoTableModel carregado com
* a lista de Preco especificada. */
public PrecoTableModel(List<Preco> precos) {
//System.out.println("passei na PrecoTableModel!");
this.linhas = new ArrayList<Preco>(precos);
/* linhas = new ArrayList<Preco>(precos);
for (Preco p: linhas){
System.out.println(" Id. Tipopreco=" + (p.getIdtipopreco().toString()));
System.out.println(" Nome Tipo=" + (p.getDescricao()));
System.out.println(" Id.Protese=" + (p.getIdprotese().toString()));
System.out.println("Nome Protese=" + (p.getNomeprotese()));
System.out.println(" Id.=" + (p.getId().toString()));
System.out.println("Preco=" + (p.getPreco()));
}*/
}
/* Retorna a quantidade de colunas. */
@Override
public int getColumnCount() {
// Esta retornando o tamanho do array "colunas".
//System.out.println("tamanho da coluna=" +colunas.length);
return colunas.length;
}
/* Retorna a quantidade de linhas. */
@Override
public int getRowCount() {
// Retorna o tamanho da lista de Preco.
return linhas.size();
}
/* Retorna a quantidade de linhas. */
public int getColumnModel(int i) {
// Retorna o tamanho da lista de Preco.
return i;
}
@Override
public String getColumnName(int columnIndex) {
// Retorna o conteudo do Array que possui o nome das colunas
//System.out.println("nome da coluna=" +colunas[columnIndex]);
return colunas[columnIndex];
}
;
/* Retorna a classe dos elementos da coluna especificada.
* Este método é usado pela JTable na hora de definir o editor da célula. */
@Override
public Class<?> getColumnClass(int columnIndex) {
// Retorna a classe referente a coluna especificada.
// Aqui é feito um switch para verificar qual é a coluna
// e retornar o tipo adequado. As colunas são as mesmas
// que foram especificadas no array "colunas".
switch (columnIndex) {
case 0: // Primeira coluna é o nome, que é uma String.
return Integer.class;
case 1: // Segunda coluna é o telefone, que também é uma String..
return String.class;
case 2: // Terceira coluna é a data de cadastro,
// apesar de ser do tipo Calendar,
// estou retornando Degerate por causa da formatação.
return Integer.class;
case 3: // Quarta coluna é a mensalidade, um double.
return String.class;
case 4: // Quarta coluna é a mensalidade, um double.
return Integer.class;
case 5: // Quarta coluna é a mensalidade, um double.
return Double.class;
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("ERRO. Coluna fora do limite - ClassPreco!");
}
}
;
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Preco preco = 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) {
// Seguindo o exemplo: "Tipo","Data de Cadastro", "Nome", "Idade"};
case 0:
return preco.getIdtipopreco();
case 1:
return preco.getDescricao();
case 2:
return preco.getIdprotese();
case 3:
return preco.getNomeprotese();
case 4:
return preco.getId();
case 5:
return preco.getPreco();
default:
// Isto não deveria acontecer...
throw new IndexOutOfBoundsException("Erro - columnIndex fora de limite GetPreco!");
}
}
@Override
//modifica na linha e coluna especificada
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Preco Preco = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado
switch (columnIndex) { // Seta o valor do campo respectivo
case 0:
// Preco.setGrupoPreco(aValue.toString());
/* System.out.println("Id.= " + setGrupoPreco+"");
System.out.println("Nome Preco=" + (Preco.getNome()));
System.out.println(" Prazo=" + (Preco.getPrazo().toString()));
// System.out.println(" Id. Grupo=" + (Preco.getGrupoPreco().getId()));
System.out.println(" Nome Grupo=" + (g.getNomegrupo()));*/
case 1:
// Preco.setGrupoPreco(aValue.toString());
case 2:
// Preco.setId(aValue.toString());
case 3:
// Preco.setNome(aValue.toString());
case 4:
// Preco.setPrazo(aValue.toString());
default:
// Isto não deveria acontecer...
}
fireTableCellUpdated(rowIndex, columnIndex);
}
//modifica na linha especificada
public void setValueAt(Preco aValue, int rowIndex) {
Preco preco = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado
preco.setPreco(rowIndex);
fireTableCellUpdated(rowIndex, 5);
}
;
;
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Preco getPreco(int indiceLinha) {
return linhas.get(indiceLinha);
}
/* Adiciona um registro. */
public void addPreco(Preco m) {
// Adiciona o registro.
linhas.add(m);
int ultimoIndice = getRowCount() - 1;
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
/* Remove a linha especificada. */
public void removePreco(int indiceLinha) {
linhas.remove(indiceLinha);
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
/* Adiciona uma lista de Preco ao final dos registros. */
public void addListaDePreco(List<Preco> Preco) {
// Pega o tamanho antigo da tabela.
int tamanhoAntigo = getRowCount();
// Adiciona os registros.
linhas.addAll(Preco);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
/* Remove todos os registros. */
public void limpar() {
linhas.clear();
fireTableDataChanged();
}
/* Verifica se este table model esta vazio. */
public boolean isEmpty() {
return linhas.isEmpty();
}
public void setVisible(boolean b) {
}
// retorna a largura da coluca como fazer esse metodo retornar a largura da coluna?
/* public Object getColumn(int i) {
switch (i) { // Seta o valor do campo respectivo
case 0:
// return colunas[columnIndex].setPreferredWidth(200);
case 1:
// Preco.setGrupoPreco(aValue.toString());
case 2:
// Preco.setId(aValue.toString());
case 3:
// Preco.setNome(aValue.toString());
case 4:
// Preco.setPrazo(aValue.toString());
default:
// Isto não deveria acontecer...
}
// fireTableCellUpdated( columnIndex);
}*/
}
Agradeceria muito se alguem pudesse me ajudar.