Inserir uma nova linha numa table em cima do Header
3 respostas
D
DanielleCDFS
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?
É 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.
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);
Visualmente, vai ficar muito parecido com uma linha da própria JTable.
D
DanielleCDFS
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
D
DanielleCDFS
Olha como tá meu código:
// Implementa Função para o Botão Gerar Relatóriobotao.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){try{//Url do Banco de Dados que será utilizadoStringurl=“jdbc:odbc:Teste”;Stringusuario=“sa”;Stringsenha=“”;Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Connectioncon;con=DriverManager.getConnection(url,usuario,senha);Statementst=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);Stringpedidos[]=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.StringBuilderquery=null;query=newStringBuilder("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 (");Stringpedido1;pedido1=pedidos[0];pedido1=pedido1.trim();query.append(pedido1);for(inti=1;i<pedidos.length;i++){Stringpedido=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");Stringconsulta;consulta=query.toString();System.out.println(consulta);ResultSetrs=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 TableModelmodelo=newMyTableModel(rs);table.setModel(modelo);//Exibe os dados das linhas centralizados AlteraLinhacentralizado=newAlteraLinha();table.setDefaultRenderer(Object.class,centralizado);l3=newJLabel("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(newColor(255,255,204));f2=newFont("negrito",Font.BOLD,14);table.getTableHeader().setFont(f2);f3=newFont("",Font.ROMAN_BASELINE,13);table.setFont(f3);centralizado.setHorizontalAlignment(SwingConstants.CENTER);// Centraliza os valores da tabelatable.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();JFrameframe=newJFrame("Relatório de Pedidos");frame.setSize(700,500);frame.setLocationRelativeTo(null);frame.add(BorderLayout.CENTER,newJScrollPane(table));//Inserção do botão para Imprimir o relatório geradoframe.add(BorderLayout.PAGE_START,botaoImprimir);//Inserção do botão para Exportar para Excel o relatório geradoframe.add(BorderLayout.PAGE_END,botaoGerarExcel);frame.setVisible(true);}}// Fecha a conexão com o banco de dadosst.close();con.close();}