JTable dentro de uma celula de uma JTable [RESOLVIDO]

6 respostas
A

Olá,

Estou desenvolvendo um aplicativo onde preciso criar uma tabela de uma linha e 12 colunas, onde cada coluna corresponde aos meses do ano.
Dentro de cada celula, preciso que haja outra tabela X linhas (dinamico) e 2 colunas, onde cada coluna representa "valores previstos","realizado".

Utilizando o Swing, criei a tabela mãe sem problemas, mas na hora que tento inserir outra tabela dentro da celula o programa esta inserindo o codigo :

"javax.swing.JTable[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=
,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false
,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=122,g=138,b=153],
preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true
,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],
showHorizontalLines=true,showVerticalLines=true]"

Pelo que andei lendo, aprece que tenho que renderizar essa tabela interna, mas não estou conseguindo fazer isso..
Segue o codigo de criação das tabelas:

public class jTableComplexa {

    public static JTable create() {
        JTable tbAcompanhamento = new javax.swing.JTable();

        tbAcompanhamento.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][]{
                    {createInnerTable(), null, null, null, null, null, null, null, null, null, null, null}
                },
                new String[]{
                    "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
                }));

        tbAcompanhamento.getTableHeader().setReorderingAllowed(false);

//        jScrollPane1.setViewportView(tbAcompanhamento);

        return tbAcompanhamento;
    }

    private static JTable createInnerTable() {

        JTable innerTable = new javax.swing.JTable();

        innerTable.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][]{
                    {null, null}
                },
                new String[]{
                    "Previsto", "Realizado"
                }) {

            boolean[] canEdit = new boolean[]{
                false, false
            };

            @Override
            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        return innerTable;
    }
}

6 Respostas

Aldeir

Para que uma pessoa em sã consiencia vai colocar uma Jtalbe dentro de uma célula?

Fexx

Lembrando que usando DefaultTableModel só vai ter problemas, e sem performance.

A

Além do exemplo já comentado acima, qualquer caso onde em uma determinada linha x coluna seja necessário exibir mais de uma informação… Por exemplo,
uma tabela de cadastro de clientes,na linha de um determinado cliente e na coluna e-mail, poderia vir uma outra tabela com as colunas “Pessoal”,“Profissional”, por exemplo…

Não acho que seja produtivo criticar a minha pergunta, sem sugerir uma alternativa melhor… Mas enfim, está ai a minha explicação, desculpe-me se não foi uma boa pergunta.

Att.

Fexx

Todos temos duvidas, e o fórum é o lugar certo para isso.

enfim…

Se é que entendi, não seria melhor usar um JComboBox nas celulas ou colunas?

Boa sorte.

E

Procura no Google: “jtable inside jtable”

A

Muuito obrigado ! Esse link atende exatamente as minhas necessidades!

Criado 23 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 6
Participantes 4