Why does setting a frame's relative width not work?

I’m generating a frame like so:

    XTextFrame frame = UnoRuntime.queryInterface(XTextFrame.class, serviceFactory.createInstance("com.sun.star.text.TextFrame"));
    text.insertTextContent(cursor, frame, false);
    XPropertySet properties = UnoRuntime.queryInterface(XPropertySet.class, frame);
    properties.setPropertyValue("AnchorType", TextContentAnchorType.AT_PAGE);
    properties.setPropertyValue("VertOrient", VertOrientation.CENTER);
    properties.setPropertyValue("VertOrientRelation", RelOrientation.PRINT_AREA);
    properties.setPropertyValue("HoriOrient", HoriOrientation.CENTER);
    properties.setPropertyValue("HoriOrientRelation", RelOrientation.PRINT_AREA);

    properties.setPropertyValue("Width", 15000);
//    properties.setPropertyValue("RelativeWidthRelation", RelOrientation.PRINT_AREA);
//    properties.setPropertyValue("RelativeWidth", 100);

If I comment out the “Width” setting line and uncomment the relative width setting lines, the frame shows up as 1 character wide. I’ve tried all the different RelOrientation values but none of them make any difference. What do I need to do to get the frame sized as 100% of the printable area on the page?

I have no problems with this using Basic or Python. Text frame shows across entire width. However I do not see where ‘cursor’ is created. Something such as (not sure of Java syntax - "XTextDocument document = getDocument();):

cursor = document.Text.createTextCursor() with that going before text.insertTextContent(cursor, frame, false); and move both lines to after all properties have been set.

Just noticed, don’t see where “text” is created - sb something like “text = document.Text”