Problem fitting TilePane's height and width to parent ScrollPane in SceneBuilder - javafx

I'm building a JavaFX desktop app using scenebuilder for the UI.
Here i have a tilepane inside of a scrollpane, i couldnt use the "fit to parent" option from the context menu in scene builder, i guess the solution is to give them -fx-id's and bind their width in the controller ?
I dont want to use any values so it all comes together nice when the user resizes the window.
how should i go about doing this?

Related

Javafx - Resizable UI that works outside a Tab doesn't when put inside a Tab

Is there any reason that a FXML that resizes nicely when put in it's own stage, does not resize properly when put in a TabPane? It resizes horizontally fine, but vertically it doesn't act the same.
I used the fx:include method to include various controls with their own controllers as Tabs.
I have tried changing the root Pane type of each but nothing seems to help it resize in a Tab.
Any advice on this problem? I can't be the only one.

setMaxHeight() method not working for TextField in JavaFX

TextField t1 = new TextField();
t1.setMaxHeight(50);
t1.setMaxWidth(140);
This is the code I use to define a TextField in JavaFX. I think setMaxHeight() method is not working because size is not changing even if the value is changed.
So I tried setPrefSize(), but it too has a problem. The height property is working fine in it, but width is larger than I specified.
How to solve the above issue ?
This is very similar to how swing components work with a layout manager. In javafx the parent pane will adjust the size of nodes so a size that fits. I bet if you give the pane more room the nodes will fill out to their preferred size.

Why can't I set AnchorPane's resizable attribute?

I created a FXML file using JavaFX Scene Builder 1.1. An AnchorPane is created by default. Why can't I modify the resizable attribute?
Do you want to disable window resizing? If so, you can do that in your application program:
stage.setResizable(false);
Why you can't edit bounds
Checkout the javadoc on layoutBounds and boundsInLocal. You will notice that both are ReadOnlyObjectProperties, which is why you can't directly modify them in SceneBuilder.
How to resize a node in SceneBuilder
You can indirectly effect the bounds properties and directly set the resizable properties of the node by altering the min, pref and max height and width.
You can also set the pref size by selecting the pane to be resized and dragging the resizing anchors the surround the selected pane.
Further Information
You might want to read the Oracle tutorial on Tips for Sizing Nodes and Amy Fowler's presentation on JavaFX layout.
You can change resizeble using code
primaryStage.setResizable(false);

JavaFX equivalent to fill_parent in android

I´m using JavaFX scene builder now for the first time and I´m wondering if there is any fill_parent setting to let for example the menu bar always have the size of it´s parent, even if the window is rescaled by code.
Is there any appproach to have such a behavior in the designer?
There is the function "Fit To Parent" that can be found by right-clicking on an element in a container. This function is not available for all containers, what container do you want to fill?

Flex Vertical Scroll bar problem

I have a problem in flex scroll bars. I have a mxml component based on canvas. Inside that I have used a VBox for my form. Above that Vbox I have another canvas just for title.
My form gets longer than normal screen size when the grid inside that is filled with more data. In that case I want a vertical scroll bar just for Vbox in which my form is located. But the whole canvas is getting scrollbar including title canvas. how to solve this problem.
I set vertical scrollbar policy of main canvas to off and inside Vbox's VerticalScrollbarPolicy to on. but that's not working. It is not overriding the property of parent container.
Thanks.
Keep your Form inside a Canvas inside the parent canvas instead of VBox. VBox and HBox are set to grow automatically in the parent container, so if your form grows, your corresponding VBox will grow as well.
You want to overload the "updateDisplayList" function for your parent canvas, and force the height of your form Vbox to be canvasHeight-titleHeight (including padding, space, etc...) so that the VBox never grows larger than the screen. This will solve your problem. Just make sure you check for the existence of the VBox as sometimes the updateDisplayList will be called before it has been instantiated.
Had the same problem myself and decided to take the easy route.
Have the following
App->vbox->[vbox + hbox]
components are dynamically being added to last vbox. Wanted hbox to stay on screen and have scrollbars only in vbox above it(2nd vbox).
Was experiencing the same problem. All containers had scroll policy=off except for last vbox, but when dynamically adding components, when the components filled the vbox > 100%, the outer vbox would start to scroll.
Resolution was simple once I went back to the documentation.
Set scroll policy - horizontal and vert on app and first vbox to off, and also added autoLayout=false. This causes the engine to not resize the components after initialization, ie, they are static sized.
Once I added this property, no more scrollbars except for the inner vbox.
Tada!

Resources