segunda-feira, 10 de setembro de 2007

JFormattedTextField em JTable

Uma outra coisa legal sobre JFormattedTextField (que, de agora em diante, será chamado de JFTF) é que ela pode ser usada em outros componentes do Java. Aqui eu vou mostrar como fazer uma célula do JTable ficar formatadinha certinho:


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){
e.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", "12345-678"},
{"Nome 2", "Cidade 2", "91011-121"}
};
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));

///// 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);
}
}


Pra ver se funcionou, chame a classe TabelaJFTF:


TabelaJFTF tabela = new TabelaJFTF;
tabela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


Lembrando que, desse jeito, o valor só será formatado automaticamente quando a célula for editada, ou seja, quando a tabela é exibida, as colunas serão exibidas como foram declaradas no construtor da tabela.

Por agora é isso.

Té o/

3 comentários:

Felipe disse...

sei que é um post velho...
mas caso o dono do blog ver e puder ajudar.
Tem como evitar isso aqui que vc falou?

"Lembrando que, desse jeito, o valor só será formatado automaticamente quando a célula for editada, ou seja, quando a tabela é exibida, as colunas serão exibidas como foram declaradas no construtor da tabela."

fazer que assim que seja inicializado a mascara já seja aplicada? sem ter que entrar em modo de edição?

[]'s

felipejacson@hotmail.com

William Bartko disse...

Brothar, funcionou certinho aqui, e olhe que eu estou usando o editor do netbeans ainda!
Valeu, abraço!

Evandro disse...

bom exemplo, funciona legal!
Valeu.