[quote=“gordcoder”]OK, that’s flexible.
But my elderly brain is stuck - who gets the “on-click” message?
The containing component?
The TabbedComponent class does all of the heavy lifting. There are two different ways to manage tabs provided by JUCE. The TabbedComponent class, and the TabbedButtonBar. You’re either conflating these classes, or looking for one to behave as the other.
The basic form is the TabbedButtonBar. It’ll give you a tab component that merely displays a tab collection. It’s up to you to create, position, and manage the ‘tabs’ when the user switches as the active tab.
The TabbedComponent is a general purpose high level implementation of the lower level TabbedComponent class. Here all of the tab switching and component displaying logic is managed for you. You need merely create components that will represent your tab pages, and pass it to a call to TabbedComponent::addTab(). When the user selects the tab, the component will be automatically shown.
For both classes you create sub-classes and override currentTabChanged() to be told when the user has selected a new tab. In the case of TabbedButtonBar, this is pretty much essential. In the case of TabbedComponent you only need to do this if something extra needs to happen when a tab component is shown.
What are the differences between using “named component” and loading a file?[/quote]
Everything and nothing; the two don’t relate. Naming a component is just a convenience thing. You are essentially setting an arbitrary string for the component which can be helpful for descriptively locating it amongst its peers for example. JUCE doesn’t have a native ‘serialize component’ style feature if that’s what you’re looking for. It wouldn’t be too difficult to get a component serializer working if you need one. Check out the ValueTree class. It makes it extremely simple to describe arbitrary data and serialize to XML, or a bin file.
 We need either the love, or ‘we’re not worthy’ smilies!