Olá pessoal…
Encontrei um código na net para suprir minha necessidade, que é : inserir uma máscara em uma coluna do JTable.
O código está certo, porém quando eu rodo a aplicação a máscara não está aparecendo, ela somente aparece se eu der dois cliques na coluna que eu inseri a máscara (na verdade um JFormattedtextField), alguém sabe me dizer como que eu faço para a máscara aparecer logo quando o sistema é iniciado?
O código:
public class TabelaJFTF extends JFrame{
MaskFormatter cep;
JFormattedTextField jftf;
public TabelaJFTF(){
super("Testando JTable com JFTF");
////// Parte que interessa /////
try{
cep = new MaskFormatter("#####-###");
cep.setPlaceholderCharacter('_');
} catch(ParseException excp){
excp.printStackTrace();
}
// Jogando a máscara no JFTF
jftf = new JFormattedTextField(cep);
// Título das colunas
String[] colunas = {"Nome", "Cidade", "CEP"};
// conteúdo da tabela // (pode ser um select, qqr coisa)
Object[][] conteudo = {
{"Nome 1", "Cidade 1", ""},
{"Nome 2", "Cidade 2", ""}
};
JTable tabela = new JTable(conteudo, colunas);
TableColumn col = tabela.getColumnModel().getColumn(2);
// Aqui a mágica acontece!
col.setCellEditor(new DefaultCellEditor(jftf));
tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));
tabela.repaint();
///// Parte que não interessa
Container c = getContentPane();
c.setLayout(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(tabela);
c.add(scrollPane);
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args) {
new TabelaJFTF();
}
}