Take a look at this link: http://stackoverflow.com/questions/353928/jasperreports-subreports-not-working-with-positiontype-float For 2 subreports, it has to be done like this: set Position Type of the first one to "Fix Relative to Top". The second subreport has to be set to float. Also, the second subreports' "y" attribute must be equal to the first subreport "y" attribute plus the first subreport "height" attribute. Example: <subreport> <reportElement x="38" y="38" width="347" height="1" isRemoveLineWhenBlank="true"/> <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{subreport1})]]></dataSourceExpression> <subreportExpression><![CDATA[$P{RemarkSubReport}]]></subreportExpression> </subreport> <subreport> <reportElement positionType="Float" mode="Opaque" x="38" y="39" width="480" height="1" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true"/> <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{subreport2})]]></dataSourceExpression> <subreportExpression><![CDATA[$P{DetailSubReport}]]></subreportExpression> </subreport