É possível um JLabel ou JPanel dentro de um JTable?

Oi pessoal,

Eu gostaria de saber se é possível inserir um objeto do tipo JLabel ou JPanel dentro de uma célula de um JTable.

Se for possível como se faz isso? Pq na minha tabela ao invés de aparecer o objeto é exibido o toString() do objeto: javax.swing…

Valew pessoal,

:smiley:

Em um projeto, um cara desenvolveu o seguinte para a sua problemática.

Criou um array de JPanels do qual cada cada panel iria representar na verdade uma célular, então dessa forma ele adicionou esses jpanels em outro array com um layout diferente, então conseguiu um efeito de uma tabela diferenciada.

Claro, não esqueceu de colocar o JScrollPanel para poder mexer nas células de baixo.

Tente fazer algo do tipo.

Realmente esta é uma boa alternativa.

O problema é que o projeto está quase pronto, ai não vale mais a pena mexer nestas coisas. Na verdade eu acabei achando outra alternativa para a minha necessidade, eu usei um TableCellRenderer. Só que dá muito trabalho mexer nesta parte de Graphics.

Mas vou anotar sua dica pra não sofrer no futuro :lol:

Basta implementar a interface javax.swing.table.TableCellRenderer.

exemplo:

public class PanelCellRenderer implements TableCellRenderer{

   public PanelCellRenderer(){

   }

   public Component getTableCellRendererComponent(JTable table, Object value,
					    boolean isSelected, boolean hasFocus, 
					    int row, int column){
           JPanel panel = new JPanel(new BorderLayout());
           JLabel label = new JLabel(value.toString());
           panel.add("Center", label);
           return panel;
   }

}

e para, enfim, utilizá-lo basta adicionar o renderer acima na(s) coluna(s) desejadas :

suaTabela.getColumnModel().getColumn(x).setCellRenderer(new PanelCellRenderer());

abraços,

gqueiroz

Valew…

Era o que eu precisava :slight_smile: