olá
como eu faço isso?
olá
como eu faço isso?
utilizando CellRenderer (google).
Da uma olhada na classe DefaultTableCellRenderer. Com da pra fazer isto.
Alguem tem algum exemplo?
Olá renatotn7…
Eu demorei mas consegui achar uma classe que faz isso no google, porém até hj não saquei muito bem como ela funciona, esse negócio de DefaultTableCellRenderer é meio chatinho, mas eu coloquei ela no meu sistema e ta funcionando…
caso vc ainda não tenha conseguido fazer isso, eu posso te passar, é só pedir ai…
flw t+
pow eu ainda não consegui setar a cor… alguem mais poderia me ajudar com algum exemplo?
Olá renatotn7, vou postar um código aqui que acho que vai resolver teu problema…
A classe abaixo é a responsável por pintar a célula, simplesmente crie uma classe com o mesmo nome da classe abaixo e jogue esse código dentro dela, ou troque o nome se preferir, ou se precisar, adapte o código as suas necessidades, mais eu acho que não vai ser necessário…
import java.awt.Color;
import java.awt.Component;
import java.awt.Point;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class PintarLinhasTabela extends DefaultTableCellRenderer {
private Map _cores = new HashMap();
private Point _tempCel = new Point(0, 0);
private Color _defaultBG;
public PintarLinhasTabela() {
this._defaultBG = getBackground();
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(
table,
value,
isSelected,
hasFocus,
row,
column);
this._tempCel.x = row;
this._tempCel.y = column;
if (this._cores.containsKey(this._tempCel)) {
c.setBackground((Color) this._cores.get(this._tempCel));
} else {
c.setBackground(this._defaultBG);
}
return c;
}
public void colorirCelula(int row, int col, Color cor) {
this._cores.put(new Point(row, col), cor);
}
}
como no meu caso eu sempre pinto a ultima linha inserida na tabela, eu faço assim, eu pego a posição da ultima linha inserida, na primeria linha de código abaixo, depois uso o objeto renderer que é do tipo PintalLinhasTabela, que está declarado global na classe onde eu tenho a tabela, que é a classe capaz de pintar, então eu uso ele e o método colorirCelula, passando o index da ultima linha que eu adicionei, a coluna e a cor, como eu tenho 7 colunas na tabela, e na verdade não se pinta a linha, se pinta a célula, então eu uso um laço para pintar todas as células da ultima linha que foi adicionada…
int ultimaLinha = modeloTabela.getRowCount() - 1;
for (int i = 0; i < 6; i++) {
renderer.colorirCelula(ultimaLinha, i, Color.orange);
}
//declarações globais da sua classe
private PintarLinhasTabela renderer = new PintarLinhasTabela();
qualquer dúvida posta ai, se eu souber ajudar…
flw t+
Maravilha!!!
mas acabo perdendo o alinhamento horizontal definido anteriormente,
e se seto o alinhamento de uma coluna acaba setando para todas.
como resolvo isso???
column = tbVendas1.getColumnModel().getColumn(c);
renderer.colorirCelula(i, c, Color.lightGray);
column.setCellRenderer(renderer);
column = tbVendas1.getColumnModel().getColumn(1);
renderer.setHorizontalAlignment(SwingConstants.LEFT);
column.setCellRenderer(renderer);