ola pessoal
eu sei q vcs vão mandar procurar no site, mas oq eu preciso é justamente uma seleção de coisas q axei aki no GUJ.
entaum vamus ao problema.
eu tenho uma JTable e preciso de 3 coisas nela
- centralizar o conteudo na célula
- redimensionar a largura da coluna de acordo com o conteúdo
- colorir a ultima célula de acordo com uma cor
eu tenho o código de centralizar assim:
public void alinhaTableCentro() {
DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer();
cellRenderer.setHorizontalAlignment(SwingConstants.CENTER);
for(int numCol = 0; numCol < table.getColumnCount(); numCol++) {
table.getColumnModel().getColumn(numCol).setCellRenderer(cellRenderer);
}
}
de redimensionar assim:
public void arranjaColuna(int coluna, int margin) {
TableModel model = table.getModel();
DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();
TableColumn col = colModel.getColumn(coluna);
int width = 0;
// Obtem a largura do cabecalho
TableCellRenderer renderer = col.getHeaderRenderer();
if(renderer == null) {
renderer = table.getTableHeader().getDefaultRenderer();
}
Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0);
width = comp.getPreferredSize().width;
for(int r=0; r<table.getRowCount(); r++) {
renderer = (ColorCellRenderer) table.getCellRenderer(r, coluna);
comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, coluna), false, false, r, coluna);
width = Math.max(width, comp.getPreferredSize().width);
}
width += 2*margin;
col.setPreferredWidth(width);
}
de colorir eu tenho uma classe chamada ColorCellRenderer q extende DefaultTableCellRenderer no qual sobreponho o método getTableCellRendererComponent e acrescento o método colorir célula. A classe ficou deste modo:
public class ColorCellRenderer extends DefaultTableCellRenderer {
private Map cores = new HashMap();
private Point tempCel = new Point(0, 0);
private Color defaultBackground;
/** Creates a new instance of ColorCellRenderer */
public ColorCellRenderer() {
this.defaultBackground = getBackground();
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
this.tempCel.x = row;
this.tempCel.y = column;
if(this.cores.containsKey(this.tempCel)) {
comp.setBackground((Color) this.cores.get(this.tempCel));
} else {
comp.setBackground((Color) this.defaultBackground);
}
return comp;
}
public void colorirCelula(int row, int column, Color cor) {
this.cores.put(new Point(row, column), cor);
}
}
agora eu queria integrar tudo isso e estou tendo problema. quando mando centralizar e redimensionar o código funciona…c mandar fazer isso e colorir ele naum pinta…somente faz os 2 primeiros
Alguém poderia ajudar ??
Ricardo