Salve galera, estou tentando pintar as linhas de uma JTable conforme uma condicao verdadeira. No caso eu tenho as prioridades por exemplo “Prioridade Normal, Prioridade Urgente, Prioridade Urgentissimo”.
Se “Prioridade Urgente = S”, pinta linha de amarelo
SeNão Se “Prioridade Urgentissimo = S”, pinta linha de vermelho
Senão
"Prioridade Normal = S", deixa linha como esta
Estou tentando assim.
public class YRequisicoes {
/** Tabela de Requisicoes yrequisicoes em MySQL */
private Long id;
private Long idControlReq;
private String data;
private Integer idDepto;
private Long idFunc;
private String pn; //prioridade normal
private String pu; //prioridade urgente
private String pmo; //prioridade urgentissimo
private String manut;
private String prev;
private String cor;
private String mequip;
private String repest;
private String usoimed;
private String observ;
private String status;
//get e set
public class RequisicoesTableModel extends AbstractTableModel{
/** AbstractTableModel de YRequisicoes */
private List<YRequisicoes> lista;
private String[] colunas = {"", "Id", "Data", "Pri.Normal", "Pri.Urgente", "Pri.Urgetmo", "Manutenção", "Preventivo", "Corretivo", "Mont.Equipto", "Repos.Estoque", "Uso Imedto."};
public RequisicoesTableModel(){
lista = new ArrayList<YRequisicoes>();
}
public RequisicoesTableModel(List<YRequisicoes> lista){
this();
this.lista.addAll(lista);
}
@Override
public int getRowCount() {
return lista.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
public String getColumnName(int column) {
if(colunas[column] == ""){
return "";
}else if(colunas[column] == "Id"){
return "Id";
}else if(colunas[column] == "Data"){
return "Data";
}else if(colunas[column] == "Pri.Normal"){
return "Pri.Normal";
}else if(colunas[column] == "Pri.Urgente"){
return "Pri.Urgente";
}else if(colunas[column] == "Pri.Urgetmo"){
return "Pri.Urgetmo";
}else if(colunas[column] == "Manutenção"){
return "Manutenção";
}else if(colunas[column] == "Preventivo"){
return "Preventivo";
}else if(colunas[column] == "Corretivo"){
return "Corretivo";
}else if(colunas[column] == "Mont.Equipto"){
return "Mont.Equipto";
}else if(colunas[column] == "Repos.Estoque"){
return "Repos.Estoque";
}else if(colunas[column] == "Uso Imedto."){
return "Uso Imedto.";
}
return "";
}
public Class getColumnClass(int columnIndex) {
if(colunas[columnIndex] == ""){
return String.class;
}else if(colunas[columnIndex] == "Id"){
return long.class;
}else if(colunas[columnIndex] == "Data"){
return String.class;
}else if(colunas[columnIndex] == "Pri.Normal"){
return String.class;
}else if(colunas[columnIndex] == "Pri.Urgente"){
return String.class;
}else if(colunas[columnIndex] == "Pri.Urgetmo"){
return String.class;
}else if(colunas[columnIndex] == "Manutenção"){
return String.class;
}else if(colunas[columnIndex] == "Preventivo"){
return String.class;
}else if(colunas[columnIndex] == "Corretivo"){
return String.class;
}else if(colunas[columnIndex] == "Mont.Equipto"){
return String.class;
}else if(colunas[columnIndex] == "Repos.Estoque"){
return String.class;
}else if(colunas[columnIndex] == "Uso Imedto."){
return String.class;
}
return String.class;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
YRequisicoes r = lista.get(rowIndex);
switch(columnIndex){
case 0: return "";
case 1: return new FormataCodigos().retornaCodigoFormatado(r.getIdControlReq());
case 2: return r.getData();
case 3: return r.getPn();
case 4: return r.getPu();
case 5: return r.getPmo();
case 6: return r.getManut();
case 7: return r.getPrev();
case 8: return r.getCor();
case 9: return r.getPrev();
case 10: return r.getMequip();
case 11: return r.getRepest();
case 12: return r.getUsoimed();
default: return new String();
}
}
public YRequisicoes getRequisicoes(int row){
return lista.get(row);
}
public List<YRequisicoes> getListaRequisicoes(){
return lista;
}
public void alterList(List<YRequisicoes> lista){
this.lista = lista;
fireTableDataChanged();
}
}
/** Metodo do JDialog que define a JTable */
private void getRequisicoes(){
List<YRequisicoes> lista = new YrequisicoesDAO().getAllRequisicoesByStatusR();
RequisicoesTableModel requisicaoTableModel = new RequisicoesTableModel(lista);
tabelaRequisicoes.setModel(requisicaoTableModel);
tabelaRequisicoes.setDefaultRenderer(YRequisicoes.class, new RequisicoesTableCellRenderer());
}
public class RequisicoesTableCellRenderer extends DefaultTableCellRenderer{
/** TableCellRenderer de Requisicoes */
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col){
JLabel label = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
YRequisicoes r = ((RequisicoesTableModel)table.getModel()).getRequisicoes(row);
if(r.getPu().equals("S")){
label.setForeground(Color.WHITE);
label.setBackground(Color.YELLOW);
}else if(r.getPmo().equals("S")){
label.setForeground(Color.WHITE);
label.setBackground(Color.RED);
}else{
label.setForeground(Color.BLACK);
label.setBackground(Color.WHITE);
}
if(isSelected){
label.setForeground(Color.WHITE);
label.setBackground(Color.BLUE);
}else{
label.setForeground(Color.BLACK);
}
return label;
}
}
Não estou conseguindo fazer isto funcionar, não tenho erro nenhum, apenas não pinta as linhas conforme preciso no bloco condicional.
Como resolver isso ?
obrigado.
