Alguém conhece algum objeto no swing que faça o que o JTable faz só que determinando valores de células (linhas x colunas)?
Algo bem simples mesmo.
Ahn?!
Também não entendi…
Um JTable no estilo mais simples de um grid.
Algo como:
Onde x e y seria linha e coluna.
Me refiro ao fato de popular um JTable, mas de maneira simples, sem ficar recorrendo a classes e etc.
Antes de mais nada, eu conheço o JTable. Estou até desenvolvendo um objeto do jeito que informei acima. só queria saber se já existe algo pronto.
Às vezes eu acho o JTable lerdo demais pra ficar populando (no sentido produtividade).
O DefaultTableModel não é assim?
Mas, ainda prefiro usar os models de maneira correta. Ficar setando strings tem outros problemas.
O pessoal do NetBeans disponibilizou um híbrido de JTable com JTree. Veja o artigo de Geertjan Wielenga na JavaLobby.
Para exemplo de uso, veja: Taking the New Swing Tree Table for a Spin
Já que você conhece JTable e TableModel não sei se isso vai adiantar mas…
private Object[][] dados;
public void setValueAt(Object valor, int linha, int coluna) {
dados[linha][coluna] = valor;
}
Quanto a questão de performance nunca trabalhei com um numero muito grande de linhas e colunas mas com o que trabalhei não parece um timer que deve ser considerado.
Abraço.
Você poderia criar um TableModel que, via Annotations, já deixasse seu JTable com a formatação, título e tamanho dos campos correta. Acho que é mais útil que bolar um jeito de transformar um JTable num jogo de batalha naval. Esse TableModel conteria um List de objetos que você quer mostrar, e a classe dos objetos visualizados teria as anotações, mais ou menos assim:
class DepositoRow {
@XColumn(title="Excluir?", editable=true, width=48)
public boolean excluir;
@XColumn(title="Comp", format = "000", width=40)
public int comp;
@XColumn(title="Banco", format = "000", width=47)
public int banco;
@XColumn(title="Agência", format = "0000", width=52)
public int agencia;
@XColumn(title="Conta", format = "00000", width=54)
public int conta;
@XColumn(title="DV", format = "0", width=34)
public int dv;
@XColumn(title="Cheque", format = "00000", width=55)
public int cheque;
@XColumn(title="Tipo", width=36)
public String tipo;
@XColumn(title="Valor", width=115)
public double valor;
@XColumn(title="Situação", width=55)
public String situacao;
public DepositoRow(int pComp, int pBanco, int pAgencia, int pConta, int pDv,
int pCheque, String pTipo, double pValor, String pSituacao) {
comp = pComp;
banco = pBanco;
agencia = pAgencia;
conta = pConta;
dv = pDv;
cheque = pCheque;
tipo = pTipo;
valor = pValor;
situacao = pSituacao;
}
}
(Aqui XColumn seria uma anotação que você criaria para ser interpretada por sua classe derivada de JTable que suportasse uma classe derivada de AbstractTableModel e que contivesse uma List de objetos, como instâncias de DepositoRow por exemplo.
E eu realmente não recomendo usar o DefaultTableModel e o tal de Object[][] em um JTable. Acho que é meio desajeitado.
Obrigado pela recomendação vou dar uma olhada via annotations como você sugeriu.
Flw.