Why does my frame not center vertically?

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);

It draws the frame centered horizontally, but not vertically (the frame draws at the top of the printable are).
If, after generating the content via code, I click inside the frame, hit enter, and then either backspace or CTRL-Z to undo, THEN it centers vertically, but unless I do that, it remains at the top, even after closing and reloading the document. Is there something else I need to do to get it centered vertically?

I have no problems with this using Basic or Python. Text frame is centered vertically and horizontally. 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”