Jtable formatada, porem erro

3 respostas
A
consegui na net dois arquivos renderer para criar uma mask em minha JTable. Render
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.siscom.renderer;
import java.awt.Component;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.TableCellRenderer;
/**
 *
 *
 */
public class NumbCellRender extends JLabel implements TableCellRenderer {  

   //**  
     //* classe para mostrar a celula com formato de moeda  
     //*/   
    private static final long serialVersionUID = 1L;   
    private JLabel cell = null;   
    private NumberFormat formatter = NumberFormat.getCurrencyInstance( new Locale("pt","BR") ); // Locale.getDefault()   
    private DecimalFormat df = new DecimalFormat("####.00");   
    private JLabel getCell() {   
        if (cell == null)   
            cell = new JLabel();   
        return cell;   
    }   
  
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {   
        if (value != null) {   
            getCell().setText( formatter.format(value) );   
            getCell().setHorizontalAlignment(SwingConstants.RIGHT);   
        } else getCell().setText("");   
        return getCell();   
    }   

    
}
[/b]Edit da Jtable[b]
import java.awt.Component;
import java.text.NumberFormat;
import java.util.Locale;

import javax.swing.AbstractCellEditor;
import javax.swing.JFormattedTextField;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
public class NumbCellEditor extends AbstractCellEditor implements TableCellEditor {   
       
	   /**  
     * classe para editar a celula com formato de moeda  
     */   
    private static final long serialVersionUID = 1L;   
    private JFormattedTextField moeda = null;   
    private NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt","BR"));   
       
    private JFormattedTextField getCell() {   
        if (moeda == null)   
            moeda = new JFormattedTextField(formatter);   
        return moeda;   
    }   
  
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {   
        getCell().setValue(value);   
        return getCell();   
    }   
  
    public Object getCellEditorValue() {   
        return getCell().getValue();   
    }   
  
  
}
so que numa Jtable ele da o seguinte erro.
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 0
        at java.util.Vector.elementAt(Vector.java:427)
        at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
        at br.com.siscom.view.MovimentoVenda.initComponents(MovimentoVenda.java:466)
        at br.com.siscom.view.MovimentoVenda.<init>(MovimentoVenda.java:24)
        at br.com.siscom.view.MovimentoVenda$1.run(MovimentoVenda.java:898)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:284)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

3 Respostas

ViniGodoy

Aparentemente esse erro está relacionado ao seu TableModel, não ao seu editor ou ao renderer.

A

tbm axei, mas como fazer la? alguma dica?

ViniGodoy

Bem… falta postar o seu TableModel, senão não tem como saber o que tem lá, nem como dar dica…

Criado 21 de setembro de 2009
Ultima resposta 22 de set. de 2009
Respostas 3
Participantes 2