Olá
Bem, antes de tudo você precisa ter claramente o que o seu cliente precisa ver.
Muitas vezes achar uma solução em JasperDesign é preciso "desenhar" seu relatório e ter uma conexão nas situações em que ele ocorre.
Não sei exatamente seu caso, mas acredito que trabalhando com grupos e ScriptLets seja possível fazer tudo o que você precisa.
No entanto, cria o XML na mão via código, é um trabalho braçal. A melhor opção é você ter um relatório seco, com funcionalidades padrão (que estarão sempre no relatório) e a parte dinâmica, que será criada em tempo de execução.
Esta é uma solução mista. Trabalhar com Relatório Dinâmico não é tão simples...(sei bem como é)... estou desenvolvendo um framework para gerar relatório sem XML (http://www.jasperforge.org/sf/projects/jautoreport). Quando ficar pronto, divulgarei a comunidade Java.
Você pode começar a trabalhar com as bandas (sejam elas fixas ou dinâmicas) e trabalhadas via código.
Recuperando uma Banda:
JRDesignGroup grupoCabecalho = (JRDesignGroup) jasperDesign.getGroupsMap().get("group");
ou Criando uma nova:
JRDesignGroup grupoTotal = new JRDesignGroup();
grupoTotal.setExpression(); // expressão em qual momento ele será exibido. ver JRDesignExpression.
grupoTotal.setName("groupTotal");
grupoTotal.setStartNewColumn(true);
jasperDesign.addGroup(grupoTotal);
// Adicionando rodapé. lembre-se que nos grupos tem-se cabeçalho e rodapé.
grupoTotalBand = new JRDesignBand();
grupoTotalBand.setSplitAllowed(true);
grupoTotalBand.setHeight(20);
grupoTotal.setGroupFooter(grupoTotalBand);
jasperDesign.addGroup(detalhamentoBand);
Note que a referência jasperDesign faz referência ao objeto JasperDesign, que pode ser criado via loading de algum XML ou inteiramente na mão.
Depois de criar os grupos, você pode pegar a referência de cada um, ou recuperá-las via Map através do nome, e usar objetos JRDesignTextField para criar os campos dinamicamente. Quando o objeto for criado, você os adiciona na referência de seu grupo.
Bom, tentei ajudar da forma que entendi seu problema. Se não ficou claro, retorne e assim que puder ajudo.
Att.