Developing a business application with JavaFX Composer
When we started developing our first business application, I’ve hesitated a long time whether we should give a try to the Netbeans JavaFX composer. I am not a big fan of such gui design tools, especially because you usually get stuck sooner or later as your application grows. But I decided to give a chance to this new tool and got really convinced by the tutorials. So we started developing our application with this tool and we have now reached our first release. So let’s have a review:
The first main question is about resizable layout. You can edit all the required layout information using the composer, but for the moment it’s clearly more oriented for static layouts. So we decided to develop a fixed-size application. I hope future releases of JavaFX and of the composer will facilitate the development of resizable applications (for example by providing a resizable scene like the JFxtras’ XScene)
The composer is designed to work with a single design file, i.e., your whole interface code is stored in a single JavaFX class. We quickly reached a point were we got a “code too large” error, due to the size of the class which is limited by the compiler. At this point I really thought I would stop using the composer, since I couldn’t figure out how to split the design file without loosing the advantages of the composer. I have finally found an approach which proved to be quite handy using placeholders panels to integrate the nodes of separate design files. I’ll post a separate blog article about this.
Another big drawback of the Composer is that you can’t work with custom nodes (for examples with JFXtras controls). It would be really interesting to be able to manipulate custom nodes with the composer. For the moment the solution is to use a placeholder and to insert your component manually. As long as you use mostly standard JavaFX components this is not too annoying, but it can be quickly annoying if you work with many custom nodes or controls.
The state system is robust and provides a very nice way to manage the view according to the logic of the application. It’s very easy and powerful to work with the states. The only point that was sometimes problematic is that you often edit some properties unintentionally in a specific state instead of in the master state. The “set to master” button is then really helpful.
Some minor features are still buggy. For example the edition of the Tooltip of a node does not work for the moment, clicking on the add button just lead to some Netbeans errors. However, this can still be done manually.
The auto-completion is unfortunately not provided when you edit the code of a binding through the property dialog, that would be handy.
Refactoring does not work in the code managed by the composer. So if your gui is bound to a model object and that you refactor the name of this object, the managed code won’t be updated and you will have to do it manually through the composer gui.
To conclude I must admit that I’ve been really impressed by the Composer tool. It’s stable and robust. The resulting JavaFX code is clear and remains clean even after hours playing with the composer. Some of the drawbacks and limitations I’ve enumerated are clearly annoying, but finally the composer is very very promising. I wouldn’t have bet one month ago that we would have developed a business application with this tool. Now it’s done, and I’m not sure I would be able to give up this composer so easily.