Inserir uma nova linha numa table em cima do Header

Boa tarde,

Eu tenho uma JTABLE e antes do Header, ou seja, dos nomes das colunas eu queria colocar uma linha com uns dados, minha table tem 5 colunas, e eu queria criar esta nova linha fazendo um merge destas 5 colunas, para os dados que desejo inserir apareça numa linha só e em cima do Cabeçalho, alguma sugestão?

Atenciosamente,

Danielle :slight_smile:

É muito difícil colocar uma linha em cima do header, na table em si. Como todas são “mergeadas”, o que você pode fazer é colocar sua JTable num JPanel, com BorderLayout. E na parte “NORTH”, colocar um painel com as informações que você quer exibir.

[code]JPanel panel = new JPanel(new BorderLayout());
panel.add(suaTable, BorderLayout.CENTER); //Sua tabela entra no centro

JPanel informacoes = criarPainelInformacoes(suaTable); //Cria o painel.
panel.add(suaTable, BorderLayout.NORTH);
[/code]

Visualmente, vai ficar muito parecido com uma linha da própria JTable.

Boa tarde,

Vou dá uma olhada nesta sua solução.
Agora se eu quiser imprimir a table tem como imprimir o painel junto? Pra ficar como se fosse uma tabela só?

Att,

Danielle

Olha como tá meu código:

// Implementa Função para o Botão Gerar Relatório
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
//Url do Banco de Dados que será utilizado
String url = “jdbc:odbc:Teste”;
String usuario = “sa”;
String senha = “”;
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection con;
con = DriverManager.getConnection(url, usuario, senha);
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

                 // Recupera os valores informados pelo usuário.
                 r1 = t1.getText().trim();
                 System.out.println("R1: " + r1);
                 String pedidos[] = r1.split("\\;");

                 if (r1.equals("") || r1.equals(" ") || r1.equals(null)){
                    JOptionPane.showMessageDialog(null, "Informe o(s) número(s) do(s) Pedido(s).", "Mensagem do Programa",JOptionPane.WARNING_MESSAGE);
                 }
                 else {
                         // Faz a consulta ao banco de dados.
                             StringBuilder query = null;
                             query =  new StringBuilder("select str(sum(c6_unsven)) as CAIXAS, c6_produto as CODIGO,c6_descri as PRODUTO, str(sum(c6_qtdven)) as UNIDADES, str(sum(c6_qtdven*b1_peso)) as PESO  from sc6010,sb1010 where c6_num in (");
                             String pedido1;
                             pedido1 = pedidos[0];
                             pedido1 = pedido1.trim();
                             query.append(pedido1);                               
                             
                             for (int i = 1; i < pedidos.length; i++) {
                                 String pedido = pedidos[i];
                                 pedido = pedido.trim();
                                 query.append( "," + pedido);                                     
                             }
                            
                             query.append(") ");
                             query.append("and b1_cod = c6_produto and sb1010.d_e_l_e_t_ <> '*' and sc6010.d_e_l_e_t_ <> '*' ");
                             query.append("group by c6_produto,c6_descri order by c6_produto,c6_descri");
                             String consulta;
                             consulta = query.toString();
                             System.out.println(consulta);
                             ResultSet rs = st.executeQuery(consulta);
                 
                            if (!rs.next()){
                                 // Se o grupo e o local informados não resultarem em nenhum registro o sistema alerta com uma mensagem de erro.
                                JOptionPane.showMessageDialog(null, "Não existem registros para os valores informados." , "Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
                            }
                            // Se a consulta resultar em registros:
                            else {

                                 //ResultSetMetaData rsmd = rs.getMetaData();
                                 //definir o modelo para a JTable renderizar o ResultSet 
                                 TableModel modelo = new MyTableModel(rs);
                                 table.setModel(modelo);

                                 //Exibe os dados das linhas centralizados                                     
                                 AlteraLinha centralizado = new AlteraLinha();
                                 table.setDefaultRenderer(Object.class, centralizado);
                                 
                                 l3 = new JLabel("PickList Pedidos: " + r1);

                                 centralizado.colorirCelula(table.getRowCount() - 1, 0, Color.LIGHT_GRAY);
                                 centralizado.colorirCelula(table.getRowCount() - 1, 1, Color.LIGHT_GRAY);
                                 centralizado.colorirCelula(table.getRowCount() - 1, 2, Color.LIGHT_GRAY);
                                 centralizado.colorirCelula(table.getRowCount() - 1, 3, Color.LIGHT_GRAY);
                                 centralizado.colorirCelula(table.getRowCount() - 1, 4, Color.LIGHT_GRAY);

                                 table.getTableHeader().setBackground(new Color(255,255,204));
                                 f2 = new Font("negrito", Font.BOLD, 14);                                     
                                 table.getTableHeader().setFont(f2);
                                 f3 = new Font("", Font.ROMAN_BASELINE, 13);
                                 table.setFont(f3);
                                 
                                 centralizado.setHorizontalAlignment(SwingConstants.CENTER);

                                 // Centraliza os valores da tabela
                                 table.getColumnModel().getColumn(0).setCellRenderer(centralizado);
                                 table.getColumnModel().getColumn(1).setCellRenderer(centralizado);
                                 table.getColumnModel().getColumn(2).setCellRenderer(centralizado);
                                 table.getColumnModel().getColumn(3).setCellRenderer(centralizado);
                                 table.getColumnModel().getColumn(4).setCellRenderer(centralizado);                                   

                                 //Redimensiona o tamanho das colunas da tabela                                     
                                 table.getColumnModel().getColumn(0).setPreferredWidth(100);
                                 table.getColumnModel().getColumn(1).setPreferredWidth(100);
                                 table.getColumnModel().getColumn(2).setPreferredWidth(300);
                                 table.getColumnModel().getColumn(3).setPreferredWidth(100);
                                 table.getColumnModel().getColumn(4).setPreferredWidth(100);
                                 table.setRowHeight(30);
                                 table.revalidate();
                      
                                 JFrame frame = new JFrame("Relatório de Pedidos");
                                 frame.setSize(700, 500);
                                 frame.setLocationRelativeTo(null);
                                 frame.add(BorderLayout.CENTER, new JScrollPane(table));
                                 //Inserção do botão para Imprimir o relatório gerado
                                 frame.add(BorderLayout.PAGE_START, botaoImprimir);
                                 //Inserção do botão para Exportar para Excel o relatório gerado
                                 frame.add(BorderLayout.PAGE_END, botaoGerarExcel);
                                 frame.setVisible(true);

                                                                     
                            }                                
                 }

                 // Fecha a conexão com o banco de dados
                 st.close();
                 con.close();
            }