Why don't GridPane, HBox, BorderPane, VBox, StackPane have Skins?

Tom Eugelink tbee at tbee.org
Mon Apr 29 21:26:29 UTC 2019

Panes are about positioning their children. But if you need a div element to do so, that should be no problem. The render engine is free to choose whatever it needs to render a given node tree.

The nodes tree is about what needs to be rendered, not how to do it for a certain technology. So GridPane just positions its childeren, independent on the actual visualization. And then the engine has to decide how to visualize those nodes (using as many divs as it needs).

On 29-4-2019 12:49, Alex Sviridov wrote:
> Hi Kevin,
> Let me explain the reasons of this question. We implement JavaFX (simplified) in TypeScript
> ( https://github.com/PavelKastornyy/script4j ) for web. For every JavaFX Node we have
> html element. For example, for Pane we have <div></div>.
> So the question, where should we put all the logic about html elements of the Node?
> We thought that Skin is the best candidate, however, we found that not all nodes have Skins,
> for example GridPane doesn't. What would you advise?
>> Пятница, 26 апреля 2019, 17:46 +03:00 от Kevin Rushforth <kevin.rushforth at oracle.com>:
>> Those are layout containers, not UI controls. Given their purpose -- to
>> be containers for laying out children -- it would seem odd for them to
>> have skins. The ability to CSS-style a Pane should be sufficient to do
>> what you want.
>> -- Kevin
>> On 4/26/2019 6:13 AM, Alex Sviridov wrote:
>>> I am studying JavaFX API and can't understand why GridPane, HBox, BorderPane, VBox, StackPane don't have Skins. According to Skin API doc:
>>>> Base class for defining the visual representation of user interface controls by defining a scene graph of nodes to represent the skin. A user interface control is abstracted behind the Skinnable interface.
>>> Why do JavaFX developers use skins only for controls, but not for the above panes? I am asking, because these panes also have visual representation. For example, we can set color, they have children which can be placed somehow differently etc. Could anyone explain?

More information about the openjfx-dev mailing list