After reading the manual I must say I'm impressed. This is a nice piece of software. However, license type GPL v3 seems to be a very poor choice in my opinion. Please correct me if I'm wrong, but wouldn't this force any work which just "uses" this library to be published under GPL as well? This is weird for something that abstract as a GUI container and is a reason for me not to use it. Therefore, 1 star only.
Are there any chances switching to BSD? If not, what is the reason for GPL?
Thank you Ben and David for this contribution. The flexible boxes finally provide a way of real interactive GUI scalability. Found nothing comparable.
Unfortunately, still some bugs and missing features (in v1.8) for large GUI applicatons. E.g.
* for containers with 2 or more dividers, sliding one divider behind another one throws "Width and height must be > 0" in Container>Container.repositionChild at 340
* dividers often overlap borders of adjacent panels, looks very unprofessional (perhaps a rounding problem of pixel positions?)
* poor redrawing in case of many nested flexible boxes (one has to watch the controls getting resized back and forth several times until the final result)
* user-defined WindowButtonUpFcn is getting lost when a divider is moved while any figure mode is on (e.g. zoom). When turning off the mode, the WindowButtonUpFcn of the devider is restored instead of the user-defined callback function.
* nice to have: height and width limits and maybe other constraints for flexible containers. Perhaps one can adopt some ideas from another nice layout manager: GridBagLayout. Thanks to OOP I'm of course free to do this by subclassing, but maybe the feature finds its way into the uiextras toolbox.
29 Dec 2010
A MATLAB class which controls layout and resize of a figure/uipanel/uicontainer.
Here is the test code to demonstrate the aliasing problem:
% findjobj test script
tgrp = uitabgroup('Parent',hWnd);
tab1 = uitab('Parent',tgrp,'Title','tab1');
tab2 = uitab('Parent',tgrp,'Title','tab2');
Matlab does not actually render the Java component until it is displayed at least once. So until that time, findjobj will return empty.
In R2014b the entire underlying graphics rendering engine has changed (so-called HG2) so it is not surprising that things that worked well in 14a need to be adapted to work in 14b. In fact, I find it a small miracle that findjobj still works well [most of the time] in 14b... In your case, you can simply activate the tabs programmatically, and call drawnow(), and this should solve your issue.
I had a similar error to Sneha, coming when a findjobj call that worked in 2014a returned an empty results in 2014b.
It my case, I was creating a uitable on a TabPanel from the GUILayoutToolbox. findjobj was not able to find the uitable after creation. It was able to find it after I changed the active tab to be that containing the uitable.
Not sure if that helps - or exactly why findjobj cannot find the object before the tab is activated.