JFormatedTextField dentro da JTable

0 respostas
gqferreira

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á...

Criado 17 de junho de 2010
Respostas 0
Participantes 1