Ok so JasperReports Java API is still very bad.
This is how to add content:
((JRDesignSection) jasperDesign.getDetailSection()).addBand(designBand);
It is shocking that after all these years you have to cast to add a band. If someone has documentation about this trick I would appreciate it.
again:
jasperDesign.getDetailSection().addBand(designBand) // compile error.