Ho applicato un cellRenderer ad una table e non capisco perchè per una tabella di 3 colonne il renderer viene "richiamato" un numero n di volte come se si generassero eventi....
Qualcuno sa suggerire qualcosa?
Grazie
Ho applicato un cellRenderer ad una table e non capisco perchè per una tabella di 3 colonne il renderer viene "richiamato" un numero n di volte come se si generassero eventi....
Qualcuno sa suggerire qualcosa?
Grazie
Prova a postare il codice... così sarà + semplice per tutti trovare l'eventuale errore.
Ciao![]()
Se vuoi trovare l'arcobaleno, devi sopportare la pioggia
[CODE]
public class TableSimpleSelect extends JDialog
{
private void init()
{
table = new TableComponent(form);
numPaginaCorr = 1;
this.fillTable();
table.setDialogSimpleSel(this);
table.getTableHeader().addMouseListener(new HeaderMouseListener());
CellHeaderRenderer tabRenderer = new CellHeaderRenderer();
table.setDefaultRenderer(Object.class,tabRenderer) ;
}
public TableComponent getTable()
{
return this.table;
}
public int getSelectedTableRow()
{
return table.getSelectedRow();
}
private class HeaderMouseListener implements MouseListener
{
public void mouseClicked(MouseEvent e) {
TableColumnModel columnModel = table.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
System.out.println("n colonna " + viewColumn);
}
public void mousePressed(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
class CellHeaderRenderer extends DefaultTableCellRenderer {
//class CellRenderer extends JLabel implements TableCellRenderer{
private TableCellRenderer defaultRenderer;
public CellHeaderRenderer() {
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected,
boolean hasFocus,
int row, int column)
{
FieldProps fp =(FieldProps)form.getBo().getMapSQL().get(colNames[column]);
if(fp.isNumericType(fp.getSqlType()))
{
setHorizontalAlignment(RIGHT);
}
else if(fp.getSqlType() == fp.TYPE_STRING)
{
setHorizontalAlignment(LEFT);
}
else if(fp.getSqlType() == fp.TYPE_TIMESTAMP)
{
setHorizontalAlignment(CENTER);
}
System.out.println("RENDERER " + numRenderer);
numRenderer++;
if(value instanceof Component)
return (Component)value;
return this;
}
}
}
[\CODE]
Ho tolto il codice che non dovrebbe influire.Comunque in sostanza è una dialog con una table e dei bottoni di navigazione.
Ho dovuto implementare qui i renderer perchè non ho accesso al componente TableComponent che comunque estende JTable.