Como inserir uma figura numa celula da tabela

7 respostas
M

Olá pessoal!!!Alguem sabe como colocar uma figura na coluna da tabela??? Preciso cololcar uma seta.

Valew!!!

7 Respostas

ViniGodoy

Você precisa alterar o CellRenderer da sua tabela.

Para começar, crie um CellRenderer que lide com imagens:

  1. Crie o seguinte CellRenderer:

public class IconCellRenderer extends DefaultTableCellRenderer { @Override protected void setValue(Object value) { setIcon((Icon)value); } }

  1. Altere o defaultRenderer dos ícones para esse renderer:
  1. Altere o seu TableModel para que retorne o ícone em uma das colunas. Não esqueça também de retornar Icon.class como columnClass da coluna desejada.
M

Oii…estou com duvidas ainda…onde coloco a figura ? Onde declaro em que lugar está a figura, pq tenho q dar o caminho onde ela esta né, na tabela vai ficar assim se a minha conta der positiva vou colocar uma seta pra cima se der negativo vou adicionar uma seta pra baixo. ~Entao tenho q fazer essa programação e colcoar o caminho de onde estão as figuras mas nao estou sabendo fazer.

Valew

kabelo

segue abaixo um exemplo de como fazer o que você deseja(pelo menos eu axo que seja isso).
Qualquer coisa posta suas dúvidas que respondo quando possível.

Obs: este exemplo é apenas uma das várias formas de se fazer isso.Talvez não seja a melhor.
[]s…

ViniGodoy

Será que não seria mais lógico o model dizer que seta deveria ser desenhada? Digo, o model fornecer o icon?

Assim você teria um CellRenderer mais genérico (como o meu ali em cima), que poderia ser usado em mais casos. E não estaria limitado ao ícone das setinhas.

Por outro lado, seu model cadastraria informações de desenho… é, acho que é um assunto para muita discussão, mas creio que eu preferisse deixar no model ainda assim, pois é o local lógico que costumamos a procurar quando o assunto é mudar o que está escrito num JTable.

kabelo

Olha ViniGodoy, fiz dessa maneira justamente para não misturar modelo(informação) e imagens(visão).
Essa dúvida eu já havia tido(fazer essa mistura, que fica mais simples), mas optei por dividir as camadas dessa forma.

Muito importante: essa não é a única forma!!!

[]s a todos…

M

Olá gente obrigada pelas dicas …consegui fazer assim:

public class CellRenderer extends DefaultTableCellRenderer {

/** Creates a new instance of CellRenderer */
  public CellRenderer() {     
    super();     
}         
     
public Component getTableCellRendererComponent(JTable table,     
        Object value, boolean isSelected, boolean hasFocus, int row, int column){     
               
  JLabel label = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);             
   Object vazio=null;   

     if(value instanceof String){
        String str = (String) value;

             if(str.equals("ALTA")){   
                    ImageIcon icon = new ImageIcon("c:/setaverde.jpg");   
                    label.setIcon(icon);   
                    label.setForeground(Color.GREEN);
                } else {   
                    if(str.equals("BAIXA")){   
                        ImageIcon icon = new ImageIcon("c:/setavermelha.jpg");   
                        label.setIcon(icon);   
                         label.setForeground(Color.RED);
                       
                    } 
                      
                                  
    }   
    }       
    return label;           
}

}

M

Agora tenho um outro problema que vou postar mas se algum de vcs ja souberem me ajudaria muito, vcs sabem se tem como adicionar num painel o navegador? Precisava abrir uma pagina da net, mas gostria q ele abrisse dentro de um aba do meu sistema. Ai gostaria de saber se tem como fazer isso. Meu projeto é um applet. Obriga mais uma vez!!!

Criado 26 de fevereiro de 2008
Ultima resposta 28 de fev. de 2008
Respostas 7
Participantes 3