Pessoal, eu tenho uma dúvida aqui complicada:
Tenho uma JTable com 2 colunas que as células devem receber conteúdo formatado(variável de 1 a 3 casas decimais escolhidas previamente) cuja média das duas primeiras será exibida numa terceira coluna.Ou seja, eu tenho que ter células formatadas, fazer uma operação(estou usando BigDecimal) enviar a uma terceira célula formatada para exibição.Quais são os passos que devo seguir?Valeu pela atenção!
Você tem uma JTable com 3 colunas, mais ou menos como
Nota 1 | Nota 2 | Media
-------+--------+------
9,50 | 10,00 | 9,75
9,00 | 5,00 | 7,00
10,00 | 9,75 | 9,86
É isso? Além disso, todas as células são read-only (não permitem edição)?
Você vai ter de criar um TableModel personalizado. O método getColumnCount() deve retornar 3, o método getColumnName() deve retornar os nomes de coluna adequados ao seu objetivo, e o método getValueAt() deve realizar o cálculo da média. Neste último método, quando o parâmetro [col] for 0 ou 1, você retornará o valor da primeira ou segunda célula, respectivamente, e quando for 3, deverá retornar a média da primeira e segunda célula.
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data
É isso? Além disso, todas as células são read-only (não permitem edição)?
É isso com diferença que a primeira e a seguda célula permitem edição!(e podem receber números tipo 78,1 a 89,921
roger_rf
Mas eu tenho que especializar cada célula?Tipo para um JTextfield depois para BigDecimal para fazer a operação e volto para o JTextField para exibir o resultado, é isso?Como eu faço isso?Grato pela atenção!
Que pena que o JTable não é uma verdadeira planilha Excel - coisas que são triviais em Excel são terrivelmente complicadas de fazer em Java se não tiver uma biblioteca que ajude a usar a JTable (que é terrível para visualizar dados, e mais complicada ainda para entrar com eles).
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html é algo que tem de ser lido, mas ele não resolve de maneira simples o seu problema. De fato, editar valores diretamente dentro da JTable e fazer as atualizações nos dados automaticamente (como se fosse uma planilha) exige escrever um monte de código.
entanglement,
me desculpe!Eu dei uma explicação fraca sobre o que eu quero fazer!
O usuario irá preencher os valores da célula A e da célula B, apertará um botão(calcular) no jframe e a média sairá em C.Não é estilo excel não(automaticamente).Eu tenho que colar um JTextField por célula é isso?Tô usando o JtextField desse tópico: http://www.guj.com.br/java/81197-tem-como-eu-digitar-e-ele-ja-ir-formatando-para-moeda-/2
do usuario lauronolasco pois permite escolher o tamanho e o limite decimal de casas!
Se puder rasurar um trecho de código agradeço!
Grato pela atenção!
PaulH,
dê uma olhada aqui:
http://www.guj.com.br/java/277369-jtable-com-celulas-jtextfield
e aqui:
http://www.guj.com.br/java/275365-jtable-com-celula-nao-editavel-e-celula-editavel