Boa noite pessoal!
Estou apanhando para colocar um campo formatavel dentro da jtable, o que passou mais perto foi esse:
package testes;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableModel;
import javax.swing.text.MaskFormatter;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class FormatedTable extends javax.swing.JFrame {
private JTable tbTabela;
private JButton btBotao;
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
FormatedTable inst = new FormatedTable();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public FormatedTable() {
super();
initGUI();
}
private void initGUI() {
try {
setTitle("Hello World");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
{
TableModel jTable1Model =
new DefaultTableModel(
new String[][] { { "Joao", "( ) - " }, { "Maria", "( ) - " } },
new String[] { "Nome", "Telefone" });
tbTabela = new JTable();
getContentPane().add(tbTabela, BorderLayout.CENTER);
tbTabela.setModel(jTable1Model);
TableCellEditor editor= new Editor();
tbTabela.setDefaultEditor(Object.class, editor);
}
{
btBotao = new JButton();
getContentPane().add(btBotao, BorderLayout.SOUTH);
btBotao.setText("jButton1");
btBotao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println(tbTabela.getValueAt(0, 0));
}
});
}
pack();
setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
}
}
private class Editor extends DefaultCellEditor{
public Editor() throws ParseException {
super(new JFormattedTextField(new MaskFormatter("(##) ####-####")));
// TODO Auto-generated constructor stub
}
@Override
public boolean stopCellEditing(){
String value = ((JFormattedTextField) getComponent()).getText();
System.out.println("Componente stopEditing: "+value);
return super.stopCellEditing();
}
@Override
public Component getTableCellEditorComponent(final JTable table, final Object value,
final boolean isSelected, final int row, final int column) {
System.out.println("Value getTableCellEditorComponent: "+value);
JFormattedTextField tf = ((JFormattedTextField) getComponent());
return tf;
}
@Override
public Object getCellEditorValue() {
System.out.println("Objeto getCellEditorValue: "+((JFormattedTextField)getComponent()).getText());
return ((JFormattedTextField)getComponent()).getText();
}
}
}
Tentei formatar o cellEditor mas vejam no que dá...