Supporting the Mac OS menubar in JavaFX
jonathan.giles at oracle.com
Fri Dec 9 14:56:24 PST 2011
One of the things we're planning to support in JavaFX 2.1 is the native
Mac OS menubar. This email is intended primarily to discuss the API one
expects to see to set a MenuBar in the native Mac OS menubar area. Your
feedback is sought and will be very much appreciated.
The current thinking is that Application feels like the right place to
specify a global, application-wide javafx.scene.control.MenuBar on. It
could be assumed that if a developer were to set this property, and the
operating system upon which the end-user was running the JavaFX
application was Mac OS, that the menubar will be displayed using the
native Mac OS menubar. Of course, if a developer wants a cross-platform
look and feel, they could just place the MenuBar in the stage as per
usual and it would display as it currently does. This approach opens up
a number of questions and issues:
1) What happens in the case of the end-user being on Windows? Is the
Application.MenuBar ignored, or is it automagically added to the main
Stage? (I would argue for totally ignoring it....but that leads to the
2) This approach means there needs to be operating specific code in the
UI to test whether a non-native MenuBar should be added (in the case of
Windows, for example). This starts to clutter the UI code, and without
careful consideration by the developer may result in needing to
duplicate their MenuBar code. Is there a better approach?
Another place to specify a MenuBar would be on Stage, rather than (or in
addition to), Application. Having a MenuBar property on Stage would
allow for the MenuBar to change based on the currently focused Stage -
but I'm not certain this is desirable or even the expected behaviour of
Mac OS. Therefore, I'm thinking that this is not likely to happen unless
we hear otherwise.
Like I said, we're at a very early exploration point in this process.
The controls team is very keen to hear feedback from the community, as
well as from the owners of the Application API, and the Mac OS experts
on this list.
More information about the openjfx-dev