Reviewing my trace statements
Rectangle {0, 0, 1680, 1050}
Hud resize=1680 x 1050 (1680.000000 x 1050.000000)
WARNING: Theme "GTK" could not be loaded. Using Fallback-Theme
Hud resize=1680 x 1050 (-1.000000 x -1.000000)
Hud resize=1198 x 577 (-1.000000 x -1.000000)
Hud resize=1198 x 410 (-1.000000 x -1.000000)
it appears that resolution was set the first time. If I understand correctly, the Canvas3D coordinate size remains the same and scales when its parent component resizes. This seems to work great so let's keep that.
I tried replacing setSize() with the following
@Override
public void setSize( int canvasWidth, int canvasHeight, float resX, float resY )
{
super.setSize( canvasWidth, canvasHeight, canvasWidth, canvasHeight );
if( DebugHelper.DEBUG )
{
System.out.printf( "Hud resize=%d x %d (%f x %f)\n", canvasWidth, canvasHeight, resX, resY );
}
}
and this moved everything around pretty much as expected and everything seems to have a stable visual size. I need to play some more (tried a dozen passes that I didn't comment on LOL) to see what works best, but this change helps a lot.
The HUD's resolution is a logical resolution, that is internally converted to SceneGraph's resolution to get the coordinates for a Widget. It's quite strange, that you get 1.0x1.0. It should be 1680x1050 (fixed) when you set it to a certain resolution. Try to dump not these resX and resY parameters, but getResx() and getResY(). I guess, the values you got are actually -1.0x-1.0, but not positive. It is a special value for the setSize() method, that is used to not manipulate the current resolution. getResX() and getResY() will return the actual values.
System.out.printf( "Hud resize=%d x %d (%f x %f)\n", canvasWidth, canvasHeight, getResX(), getResY() );
produced
Rectangle {0, 0, 1680, 1050}
Hud resize=1680 x 1050 (1680.000000 x 1050.000000)
WARNING: Theme "GTK" could not be loaded. Using Fallback-Theme
Hud resize=1680 x 1050 (1680.000000 x 1050.000000)
Hud resize=1664 x 539 (1664.000000 x 539.000000)
Hud resize=1664 x 674 (1664.000000 x 674.000000)
Hud resize=1664 x 343 (1664.000000 x 343.000000)
The Font sizes are a problem, that I know of. when all other problems, that occurred here on the board recently are fixed I will proceed with the Text2D speedup, that I was working on. In the same time I can try to fix the HUD Font size problem when the HUD is resized.
Oh cool, that means I don't need to fix it

The Canvas3D's size should be returned by Canvas3D.getWidth() and .getHeight(). If it is not, there's a bug, that must be fixed.
It is.
I didn't exactly understant, what the problem with the scrollbars is. Could you maybe explain a little more?
If I shrink the screen to half its height, I would like lists and other things capable of being scrolled to get scrollbars rather than shrinking to illegibly small.
There is a framework for LMs. Any WidgetContainer instance can get its own LM through the setLayoutManager() method. But as you can imagine, it has never been tested, since there are no LM implementation yet

. Though these min/max/preferred sizes are not available yet.
It would certainly be possible to pass min/max/preferred as parameters on the addWidget() method as a layout constraint. I never did like Swing's implementation putting layout artifacts into the objects themselves.
If I would implement LMs I wouldn't write them exactly like known from AWT/Swing. AWT's LMs suck a little bit. Many of them don't behave the way I would expect. So I would write them more "convenient". E.g. The GridLayout is useless for very most cases and the GridBagLayout is bloated. I would write a GridLayout a way, that allows to define column widths and row heights... just an example.
No doubt lots of LMs suck. I'm just a pragmatist who makes stuff work in preference to rewriting it

JGoodies has a very usable layout system.
Commercial version:
http://www.jgoodies.com/ - has a really nice WebStart demo that you might find useful for analyzing your disk space
Forms screen shots:
http://www.jgoodies.com/freeware/forms/index.htmlOpen source version:
https://jgoodies.dev.java.net/ - by far, I think the best piece is their forms (their name for LMs)
- not sure if their license is compatible with BSD