Alinhar dados puxados do Banco

Olá pessoal, tenho feito alguns trabalhos de escola e me deparei com a seguinte situação:

Quando o sistema retorna as informações do banco (Que neste caso vai ter que ser pelo System.out devido o professor solicitar assim… =/ ) As informações não saem alinhadas. Vocês tem alguma dica para mim?

Segue trecho do código (Não esta com erro):

    try{
        if(con != null){
            String sql;
            PreparedStatement ps;
            
            sql = "SELECT p.nome, p.marca, p.qtdestoque, t.nome"
                  + " FROM produtos p, tipoproduto t"
                  + " WHERE p.idTipoProduto = t.idTipoProduto";
            ps = con.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            
            System.out.println("=-=-=-=-=-=-=-=-"
                           + "\nRELATÓRIO DE PRODUTOS"
                           + "\n=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
            
            for(int i = 1; i<= rs.getMetaData().getColumnCount(); i++){
                    System.out.print(" | "
                                  +rs.getMetaData().getColumnName(i)+" | ");
                }
                System.out.println("\n");

            while(rs.next()){
                int numCol = rs.getMetaData().getColumnCount();
                for(int i = 1; i<= numCol; i++){
                    System.out.printf(" | "+rs.getObject(i)+" | ");
                }
                System.out.println("\n");
            }
            System.out.print("_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_"
                    + "\n Fim do relatório."
                    + "\n\n Pressione ENTER para voltar ao menu...");
            
            Scanner sc = new Scanner(System.in);
            sc.useDelimiter("\n");
            sc.nextLine(); 
            rs.close();
            ps.close();
        }                 
    }
    catch(SQLException e){                 
        System.out.println(e.getMessage());
    }

Desde já agradeço a vocês, vlw!

Galera, Já resolvi, está tranquilo… =D

é meio gambiarra, mas está valendo:

try{
            if(con != null){
                String sql;
                PreparedStatement ps;
                
                sql = "SELECT p.nome AS Nome, p.marca AS Marca," 
                      + " p.qtdestoque AS Estoque , t.nome AS Tipo_Produto"
                      + " FROM produtos p, tipoproduto t"
                      + " WHERE p.idTipoProduto = t.idTipoProduto";
                ps = con.prepareStatement(sql);
                ResultSet rs = ps.executeQuery();
                
                System.out.println("=-=-=-=-=-=-=-=-"
                               + "\nRELATÓRIO DE PRODUTOS"
                               + "\n=-=-=-=-=-=-=-=-=-=-=-=-=-");
                
                System.out.println("\n"
               + "------------------------------------------------------------------------------------------------");
                for(int i = 1; i<= rs.getMetaData().getColumnCount(); i++){
                        System.out.format("| %20s |",
                                rs.getMetaData().getColumnName(i));
                    }
                    System.out.println("\n"
               + "------------------------------------------------------------------------------------------------");
                        
                while(rs.next()){
                    int numCol = rs.getMetaData().getColumnCount();
                    for(int i = 1; i<= numCol; i++){
                        System.out.format("| %20s |",
                                String.valueOf(rs.getObject(i)));
                    }
                    System.out.println("\n"
               + "------------------------------------------------------------------------------------------------");
                }
                System.out.print("_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_"
                        + "\n Fim do relatório."
                        + "\n\n Pressione ENTER para voltar ao menu...");
                
                Scanner sc = new Scanner(System.in);
                sc.useDelimiter("\n");
                sc.nextLine(); 
                rs.close();
                ps.close();
                limpaTela();
            }                 
        }
        catch(SQLException e){                 
            System.out.println(e.getMessage());
        }

Valeu!