Suggestion for dependency injection avoidance

I would like to post a suggestion that would make this library better for users.
The problem I can see is that the Element constructor depends highly on the screen it is bound to. Every constructor requires an instance of Screen to be passed as the first parameter.
This is redundant and not needed.
Walking the tree of nested elements down to from the root element would easily result in a screen element.
For example an Element can hold a Screen instance it belongs to, which could be null before adding a control to a screen.
When an Element is added to a screen, the Screen “add” method would alter it’s children Screen property, and every child would recursively change it’s child Screen property.

This Screen parameter that has to be passed to the Element constructor is another dependency which makes the client code less modular and prone to errors.
This could be avoided in a smart way.
Take a look at GUI library such as Swing or for HTML DOM modifiaction from Javascript.
The all work on Elements or, in case of HTML - DOM nodes by simply using form of API like :

new Element(“ElementId”);
parentElement.add(childElement);

I would also recommend getting rid of positions from constructors and borders and etc…
They could be easily modified after instantiation.

I’m looking up to this library as NIfty GUI is horrible at it’s builder and factory patterns which makes it impossible to subclass the core controls classes.