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;
}
}
