Galera,
Preciso colocar um ícone dentro de uma tabela, porém esse ícone deve ser um para cada tipo de resultado.
Ex: Se status retorna L aparece um ícone x
Se status retorna N aparece um ícone y
Podem me dar alguma ideia?
Galera,
Preciso colocar um ícone dentro de uma tabela, porém esse ícone deve ser um para cada tipo de resultado.
Ex: Se status retorna L aparece um ícone x
Se status retorna N aparece um ícone y
Podem me dar alguma ideia?
Seus probremas se acabaram…
O “quê”, e de que jeito sera exibido na celula da JTable pode ser alterado facilmente, criando uma classe que extenda JLabel e implemente TableCellRenderer… depois basta aplicar à sua tabela:
Segue exemplo abaixo:
package adm.util.componentes;
import java.awt.Color;
import java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.border.Border;
import javax.swing.table.TableCellRenderer;
import adm.dominio.SinalizadorSituacao;
public class SituacaoOrdemCellRenderer extends JLabel implements TableCellRenderer {
private static final long serialVersionUID = 1L;
Border unselectedBorder = null;
Border selectedBorder = null;
boolean isBordered = true;
public SituacaoOrdemCellRenderer(boolean isBordered) {
this.isBordered = isBordered;
setOpaque(false);
}
public Component getTableCellRendererComponent(JTable table, Object object,
boolean isSelected, boolean hasFocus, int row, int column) {
String situacao = ( (String)object );
if (isBordered) {
if (isSelected) {
if (selectedBorder == null) {
selectedBorder = BorderFactory.createMatteBorder(1, 2, 1,
2, table.getSelectionBackground());
}
setBorder(selectedBorder);
} else {
if (unselectedBorder == null) {
unselectedBorder = BorderFactory.createMatteBorder(1, 2, 1,
2, table.getBackground());
}
setBorder(unselectedBorder);
}
}
setToolTipText( situacao );
if ( situacao.contains( "EM CADASTRAMENTO" ))
setIcon(new ImageIcon(getClass().getResource("/adm/imagens/editar.png")));
if ( situacao.contains( "SINCRONIZAÇÃO" ))
setIcon(new ImageIcon(getClass().getResource("/adm/imagens/sincronizar.png")));
if ( situacao.contains( "AGUARDANDO CUMPRIMENTO" ))
setIcon(new ImageIcon(getClass().getResource("/adm/imagens/cadeado-aberto.png")));
if ( situacao.contains( "CUMPRIDA" ))
setIcon(new ImageIcon(getClass().getResource("/adm/imagens/cadeado-fechado.png")));
if ( situacao.contains( "CANCELADA" ))
setIcon(new ImageIcon(getClass().getResource("/adm/imagens/cancelar.png")));
if ( situacao.contains( "EM USO" ))
setIcon( null );
setHorizontalAlignment( JLabel.CENTER );
return this;
}
}
this.tabResultadoConsulta.getColumnModel().getColumn(5).setCellRenderer( new SituacaoOrdemCellRenderer( true ) );
...
table.addRow(new Object[] {
Util.formataData(informacao.getDataexpedicao()),
informacao.getTipoordeminformacao().getDescricao(),
informacao,
"",
informacao.getStringtipificacoes(),
situacao
});
...
E isso ainda pode ser melhorado… em vez de “situacao” ser String, pode ser um objeto, que contem id e talz, pra tu fazer switch em vez de umonte de if… e blablabla…
N possibilidades 