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: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
É 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();
}