getTableCellRendererComponent

1 resposta
A

Boa Tarde!!!!

Estou com uma JTable que "modelei" com AbstractTableModel e agora quero renderizar através de DefaultTableCellRenderer. A montagem da JTable está correta, mas o problema é que parece que não está sendo chamado o método
getTableCellRendererComponent();
Coloquei dois System.out, um no construtor da DefaultTableCellRenderer
e outro dentro do método getTableCellRendererComponent() e o resultado que tenho é:

ENTROU AQUI
ENTROU AQUI

ou seja, só entrou no construtor....
O que estou fazendo de errado???? Podem me ajudar?
Abaixo está o código:

public JPanelPrecos() {
    	TablePrices tp = new TablePrices();
        MontaTabelaAdver montaAdver = new MontaTabelaAdver();
	// continua...
}


public JPanel CreateJPanelAdvertentiepagina() {
	JPanel panel = new JPanel();
	panel.setBorder(new TitledBorder(""));
	panel.setLayout(new BorderLayout());
	JTable table = new JTable(montaAdver);
	MontaTabelaAdverRenderer renderer = new MontaTabelaAdverRenderer();
	table.setDefaultRenderer(Double.class, renderer);
	table.setDefaultRenderer(Double.class, renderer);
	table.setDefaultRenderer(Double.class, renderer);
	panel.add(table.getTableHeader(), BorderLayout.NORTH);
	panel.add(table, BorderLayout.CENTER);
	return panel;
}

class MontaTabelaAdver extends AbstractTableModel {

	private static final long serialVersionUID = 1L;

	private String[] columns = { "", "", "" };

	private Vector rows = tp.getAdver();
		
	private Object[][] aMatrix;

	public MontaTabelaAdver() {
		init();
		fireTableDataChanged();
	}

	public void init() {
		int count = 0;
		Vector<Object> topoT = tp.getTopoTabela();
		columns[0] = topoT.get(0) + " - " + topoT.get(1) + " "+ InterfaceBuilder.getResourceString("periodoMeses");
			columns[1] = topoT.get(2) + " - " + topoT.get(3) + " "+ InterfaceBuilder.getResourceString("periodoMeses");
			columns[2] = topoT.get(4) + " - " + topoT.get(5) + " "+ InterfaceBuilder.getResourceString("periodoMeses");
			
		aMatrix = new Object[rows.size() / getColumnCount()][getColumnCount()];
		int count2 =0;
		while (count2 < getRowCount()) {
			Iterator<Object> it = getRows().iterator();
			while (it.hasNext()) {
				for (int i = 0; i < aMatrix.length; i++) {
					for (int j = 0; j < aMatrix[i].length; j++) {
						aMatrix[i][j] = it.next();
					}
				}
			}
			count2++;
		}
		fireTableDataChanged();
	}

	public int getRowCount() {
		return rows.size() / getColumnCount();
	}

	public int getColumnCount() {
		return columns.length;
	}

	public String getColumnName(int col) {
		if (columns[col] != null) {
			return columns[col];
		} else {
			return "";
		}
	}

	public Class getColumnClass(int col) {
		return getValueAt(0, col).getClass();
	}

	public Object getValueAt(int row, int col) {
		return aMatrix[row][col];
	}

	public boolean isCellEditable(int row, int col) {
		return true;
	}

	public Vector getRows() {
		return rows;
	}

	public void setRows(Vector rows) {
		this.rows = rows;
		this.fireTableRowsUpdated(0, rows.size());
	}

}

class MontaTabelaAdverRenderer extends DefaultTableCellRenderer {
	private static final long serialVersionUID = 1L;
	protected NumberFormat currencyFormat;
		
	public MontaTabelaAdverRenderer(){
		currencyFormat = NumberFormat.getCurrencyInstance();
	System.out.println("ENTROU AQUI");
 	}

	public Component getTableCellRendererComponent(JTable table,
		Object value, boolean isSelected, boolean hasFocus, int row,
		int column) {

		JComponent c;
		super.getTableCellRendererComponent(table, value, isSelected,
			hasFocus, row, column);

		c = new JLabel(currencyFormat.format((Double) value));
		System.out.println("ENTROU AQUI 2");
		((JLabel) c).setHorizontalAlignment(CENTER);
		return this;
	}
}

1 Resposta

A

ainda não consegui… :frowning:

Criado 10 de junho de 2005
Ultima resposta 10 de jun. de 2005
Respostas 1
Participantes 1