Вы устанавливаете предпочтительный размер только для canvas
. Это говорит родителю, что ему следует установить размер в соответствии с этими размерами, , если это возможно в соответствии с его собственными ограничениями макета.
В этом случае свойство StackPane
пытается достичь Размер настолько близок, насколько его собственный размер имеет прецедент. Это может быть сделано, поскольку вы не указываете ограничение max
/ min
. Вы можете указать ему использовать те же значения, что и для размера pref
, используя Region.USE_PREF_SIZE
:
canvas.setPrefSize(10, 20);
canvas.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
canvas.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);