Olá pessoal gostaria de possa me ajudar. Como faço para criar um JTable personalizado, com cada coluna um dado diferente.
por ex: numérico, Date… ?
JTable Personalizado
I
2 Respostas
VocÊ terá que criar o seu próprio TableModel. Da pra ter uma boa noção de como começar com esse tutorial.
I
to tentando usar este exemplo, mas adicionei um metodo para add as colunas
so que não esta funcionando…
public class SimpleTableModel extends AbstractTableModel
{
private ArrayList linhas = null;
private String[] colunas = null;
private boolean[] colsEdicao;
public SimpleTableModel(ArrayList linhas, String[] colunas, boolean[] edicao) {
setLinhas(linhas);
setColunas(colunas);
this.colsEdicao = edicao;
}
public SimpleTableModel( boolean[] edicao) {
this.colsEdicao = edicao;
}
public String[] getColunas(){
return colunas;
}
public ArrayList getLinhas(){
return linhas;
}
public void setLinhas(ArrayList linhas) {
this.linhas = linhas;
}
public void setColunas(String[] colunas) {
this.colunas = colunas;
}
@Override
public int getRowCount()
{
return getLinhas().size();
}
@Override
public int getColumnCount()
{
return getColunas().length;
// int tamanho = 0;
// for (int i = 0; i < getColunas().length; i++){
// tamanho = tamanho + 1;
// }
}
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
//Obtem a linha, que é uma String[]
String[] linha = (String[])getLinhas().get(rowIndex);
return linha[columnIndex]; //--> retorna o objeto que esta na coluna
}
@Override
public boolean isCellEditable(int row, int col){
return colsEdicao[col];
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//Obtem a linha, que é uma String[]
String[] linha = (String[])getLinhas().get(rowIndex);
//Altera o conteudo no indice da coluna passada
linha[columnIndex] = (String)aValue;
//dispara o eveno da celula alterada
fireTableCellUpdated(rowIndex, columnIndex);
}
public void addRow(String[] dadosLinha){
getLinhas().add(dadosLinha);
//Informa ao JTable de que houve linhas incluidas no modelo
//Como adicionamos no final, pegamos o tamanho total do modelo menos
//1 para obter a linha incluida
int linha = getLinhas().size()-1;
fireTableCellUpdated(linha, linha);
}
public void addListlinha(List linhaDado){
getLinhas().add(linhaDado);
int linha = getLinhas().size()-1;
fireTableCellUpdated(linha, linha);
}
public void addColumn(String[] nomeColunas){
setColunas(colunas);
}
public void removeRow(int row){
getLinhas().remove(0);
//Informa ao JTable que houve dados deletados passando a linha removida
fireTableCellUpdated(row, row);
}
//remove a linha pelo valor da coluna informada
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 conteúdo String da linha atual na coluna desejada
//com o valor informado
if (linhaCorrente[col].equals(linha)){
getLinhas().remove(linha);
//informa ao JTable que houve dados deletados passando a linha removida
fireTableCellUpdated(linha, linha);
return true;
}
}
//Não encontrou nada
return false;
}
//Retorna o nome da coluna
@Override
public String getColumnName(int col){
return getColunas()[col];
}
public JTable createJTable()
{
ArrayList dados = new ArrayList();
String[] colunas = new String[]{"Estado", "Cidade"};
boolean[] edicao = {false, true};
//Alimenta as linhas de dados
dados.add(new String[]{"SP", "São Paulo"});
dados.add(new String[]{"RJ", "Rio de Janeiro"});
dados.add(new String[]{"RN", "Rio Grande do Norte"});
dados.add(new String[]{"ES", "Espirito Santo"});
SimpleTableModel modelo = new SimpleTableModel(dados, colunas, edicao);
JTable jtable = new JTable(modelo);
jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
return jtable;
}
}
Criado 26 de junho de 2013
Ultima resposta 28 de jun. de 2013
Respostas 2
Participantes 2
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Engenharia de Prompt para Devs: Um guia para aprender a... Por Ricardo Pupo Larguesa — Casa do Codigo