Procurei em muitos lugares mas nada do pouco que encontrei satisfez minha dúvida:
Tenho uma JTable com as notas dos alunos. As três colunas a ser preenchidas mais a coluna com a média são do tipo float.
Graças a Deus está tudo funcionando normalmente, mas o que eu quero é aceitar vírgulas no lugar de ponto.
Eu sei usar NumberFormat, DecimalFormat e também replace(".",","), etc...
O problema é que não estou conseguindo associar isso à tabela.
É bom e gosto que estas colunas estejam em float, pois a tabela automaticamente rejeita qualquer caractere diferente de dígitos e ponto, impedindo o usuário de terminar a edição caso coloque algum caractere diferente desses, mas gostaria de fazer a tabela permitir vírgula para a casa decimal.
Abaixo a parte do setValueAt e getValueAt:
@Override
public Object getValueAt(int row, int column) {
/* Recebe o valor da classe Aluno a ser passado para a tabela */
if(column == 0)
return (row+1);
else if(column == 1)
return alunos.get(row).getNome();
else if(column >= 2 && column <= 4){
if(alunos.get(row).getNota(column - 2) == -1) //Se a nota é igual a -1 entao a celula é vazia
return "";
else
return alunos.get(row).getNota(column - 2);
}
else
return alunos.get(row).getMedia();
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
/* Recebe o valor da tabela a ser passado à classe Aluno */
if(aValue == null)
return ;
String a = aValue.toString();
if(columnIndex == 1)
alunos.get(rowIndex).setNome(a);
if(columnIndex >= 2 && columnIndex <= 4){
if(a.equals("")){ //Se a célula está vazia, passa pra classe aluno o valor -1
alunos.get(rowIndex).setNota(columnIndex - 2, -1.0f);
}
else{
float b = Float.parseFloat(a);
if(b < 0 || b > 10){//Impedir notas maiores que 10 e menores que 0
Dialogo.erro("Insira valores entre 0 e 10");
return ;
}
else
alunos.get(rowIndex).setNota(columnIndex - 2, b);
}
}
else return ;
fireTableRowsUpdated(rowIndex, columnIndex);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
/* Classe das colunas */
if(columnIndex >= 2 && columnIndex <= 4)
return Float.class;
return String.class;
}