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:
[code]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;
}
}[/code]