I'm in a project with WindowBuilder Pro, and while trying to get a good grip of it I've been searching forever for good documentation without any luck.
The best that I've found is Googles WindowBuilder Pro Infopage but that isn't extensive enough for me.
Does anyone know any other good documentation?
Or am I perhaps a bit off track here? I have very limited Swing-experience, and perhaps I'd be better off studying the SWING API instead of looking for WindowBuilder documentation?
Very thankful for any tips.
The WindowBuilder docs that you reference are quite extensive (nearly 300 pages), but they are intended to be docs about how to use WindowBuilder itself. They are intentionally not intended to be documentation for the Swing, SWT or GWT APIs and should not be considered to be substitutes for those. There are plenty of good sources of information on those APIs.
If you are interested in info on Swing, the primary source should be the docs and tutorials provided by Sun/Oracle. Once you have a basic understanding of Swing itself, I think you will find the WindowBuilder docs to be of great help in learning WindowBuilder which itself will be great help to you in rapidly creating Swing UIs.
I should also point out that the WindowBuilder docs in place today are actually better than those in place prior to the Google acquisition of Instantiations because they represent a further six months of work and refinement. While the product has seen a change in legal ownership, it has not actually "changed hands" in the literal sense. The exact same team that developed the tool at Instantiations has continued to work on it at Google and is also forming the core of the committer team at Eclipse.org. This continuity of development stretches eight years into the past and will continue well into the future.
This is in a really early stage but this is something that we have been working on which might be helpful for you: http://www.codemaps.org/s/WindowBuilder
WindowBuilder has changed hands several times in the last 12 months (from Instantiations to Google, followed by Google giving it to the Eclipse Foundation). Admittedly, the documentation appears to have suffered. However, as the project is still in the process of being provisioned to the Eclipse Foundation, the best place to search for documentation should be the Eclipse WindowBuilder Documentation Page, which is available from the Eclipse WindowBuilder page. Currently, the documentation page only lists the Google InfoPage that you've mentioned, but I suspect that in time the documentation will increase greatly in quality.
That being said, there is no substitute for a solid understanding of the underlying technology that you plan on using within WindowBuilder, be it SWT, Swing, or GWT. WindowBuilder will make some things easier, but many of the features will be confusing if you don't have a firm grasp of the underlying concepts. Sadly, most tutorials are still centered around hand-coding the GUI, so there is an opportunity for an enterprising documentation/tutorial writer to provide a gateway to those who wish to learn technologies like Swing and SWT using WindowBuilder.
Yea, leave the WindowsBuilder behind. The Swing tutorials are excellent: http://download.oracle.com/javase/tutorial/uiswing/
Related
Our team is developing a Eclipse based IDE (typically a plugins), currently we are progressing good but I feel somehow we are feeling smell of bad practices in code. Example I can give here is, eventListeners :
Consider we have button named button1 and in the same java file (just below the button) we are adding selection listener to it like:
button1.addSelectionListener(new SelectionListener() {
//Remaining code here
}
Which I feel is completly bad idea, and my question, is there any design pattern, best practices etc available for eclipse plugin development? Or do you have any small tips/suggestions for the same? I know there are books available like Code Complete 2 etc etc, but I need bit suggestions respect to eclipse plugin development.
I tried in Google and didn't get much good informations regarding same, I got this IBM's article. But I feel it's not very useful, any suggestions or tip is appreciated.
Note: Please let me know if it is not appropriate here or is it good for anyother stackexchange networks (like programmers), I can move it there.
After several years of plugin development, I find these resources to be most useful for me when I find myself struggling on how to implement new feature:
Eclipse sources. Nothing will beat this. Try to find some already existing analogic part of what you're just doing and look how Eclipse developers did it - what patterns and extensions they used and so on. Helps to keep you plugins consistent with other parts of Eclipse. Eclipse Plugin Spy is your friend here (Alt + Shift + F1/F2).
Platform Plug-in Developer Guide - will guide you through basic concepts of Eclipse, like how to create menus properly, implement an editor, or save user preferences.
Eclipse Plug-ins (4th Edition) - Well known must-have for plugins developer.
And, of course, Stack overflow :)
I like to add some more resources that I have found useful to dreo's answer. The eclipse sources are invaluable, if you want to understand something in detail. To understand global concepts however, I suggest to read as much tutorials as you can. I can recommend the following websites:
Eclipse Corner Articles Has a lot of tutorials ranging from basic concepts to plugins specific topics.
Vogella Eclipse Tutorials Also a good tutorial website. It deals with a lot of topics that are important for Eclipse RCP development.
SWT Snippets More than 100 code snippets. Really useful, if you want to learn more about SWT and its capabilities.
The Official Eclipse FAQs Last but not least, I can recommend the official Eclipse FAQs. They provide compact solutions for a variety of topics.
The Oracle Java Swing documentation for layout managers seems to imply that SpringLayout is an option when choosing a layout manager. ("SpringLayout is a flexible layout manager designed for use by GUI builders.") It does not show up as an option in NetBeans GUI Builder v.7.0. It's also very hard to find help on this subject - my questions have gone unanswered at the netbeans.org forum.
The Spring layout, as described in Java Swing doc, makes a lot of sense to me and I'd like to give it a try. Can it be added to NetBeans IDE and utilized when designing my GUI? What, specifically, do I need to download?
EDIT: removed reference to unrelated "Spring Framework"
The simple answer is this: NetBeans does not have support for the SpingLayout.
The GUI builder has been updated though in terms of it's GridBagLayout designer. Have you tried that? It's not quite the granularity offered with SpringLayout, but with the new builder tool, making very precise layouts is a breeze!
Netbeans does not offer support for SpringLayout, at least according to this link: http://netbeans-org.1045718.n5.nabble.com/SpringLayout-and-Matisse-td2861103.html
In it developers seem to agree that GroupLayout is a more effective replacement of SpringLayout.
To bring this question up to date to 2015 (for all those who like me found themselves looking in vain for support for SpringLayout in Netbeans) it still does not exist, and probably never will.
Many other answers here on SO about difficulties with LayoutManagers suggested using MigLayout ... but Netbeans does not provide current support for MigLayout either.
Some brief history and net research is pertinent :
Support for MigLayout was requested in Netbeans at least as far back as 2007-01-28.
An Open-source project to do so, Project Kenai, was started in June 2009.
On June 16 2009, a key Netbeans Developer announced in his blog that he had created the most basic Netbeans support for MigLayout - essentially the ability to register the layoutManager under the list of possible Mangers and little more - ie step 1 of 100 and functionally almost insignificant.
Even this extremely rudimentary support was never introduced into Netbeans, the development requests remain open, and project Kenai has not been updated since 16 June 2009.
Realistically, given all the major bugs and limitations in the Netbeans GUI Builder Matisse (which have also remained open on the Netbeans Bugzilla site for years and years) you are unlikely to find support for SpringLayout or MigLayout in Netbeans before 2020 at the earliest, if ever.
Do not despair however. After finding this out I kept looking and found extensive support for MigLayout in Eclipse (an open-source IDE akin to Netbeans).
Not only does Eclipse contain fully-integrated detailed GUI-based selection of many (but not all) detailed MigLayout options, the WindowDesigner also has a whole range of features that as an IT developer of 35 years experience (and a 12 year user of Netbeans) that I had originally expected to find in Neteans/Matisse but had just got used to not having.
It also turns out that Eclipse's code-assistant tools are neater, cleaner, more helpful, faster, more reliable, more flexible and more comprehensive too.
Netbeans is obviously a powerful IDE/platform with many visually impressive and substantial products/systems built upon it, and it might even have support for some incredible things that are not obvious on the surface, but it looks as though the severe limitations of its core screen designer (Matisse), and the repeated pattern of not fixing fundamental problems with it for years, mean that initially at least Eclipse appears to be simply a better tool for a standard Java developer wanting to use a powerful and flexible LayoutManager (without having to write one).
I'm trying to learn swing and I was thinking you guys may know a really good swing based open source application that I could study and inspire from. I'm looking for something that has a real world use, not just some concepts explained (like examples in most books and tutorials).
Thank you!
It's certainly less well-known than some of the other projects mentioned here, but have a look at GoGrinder. The code is well written and documented.
It might also be a good idea to look for something that you'll actually use. I find it easier to read the source of applications that I'm familiar with from using them.
In the same spirit as the answer suggesting to check NetBeans, I would suggest to get the sources of IntelliJ IDEA Community Edition and IntelliJ Platform from their git repository. At some point, IDEA was IMO a state of the art Swing application (fast, responsive, not ugly, nice user experience, etc).
Maybe you could have a look at the open source NetBeans IDE. It is huge, but it is using Swing intensively and is well designed and documented. Moreover, it is also a generic platform to build modular GUI applications.
The Swing Tutorial is filled with excellent code, and the Swing code itself is available for study in most IDEs.
jEdit is a programmer's text editor that I wrote some plugins for a few years ago. Partially due to the plugin system, the code is well documented, and after having been in development for many years is generally very high quality.
You could take a look at the jgoodies examples. They are not plain swing though, and I don't know the license.
Does anybody know of any real-world web applications based on JavaFX? I'm an experienced Java programmer considering starting a website while I'm not at my day job. I don't have a lot of expertise on the UI side, so I'm looking for the best way to leverage my existing skills to create something that can provide an awesome RIA experience. Only trouble is, I don't know of any sites that are implemented using JavaFX, since it's so new. I'd like to see what it's capable of.
Found here quite an interesting stories. Top two listed below.
TweetBox
TweetFX
I think the best example of what JavaFX can do is in the examples on JavaFX.com.
However, it's still early in the JavaFX days thus you will be in pioneer days. Which means there are potential rich rewards to be had, but also - many unknowns.
What I think JavaFX "sweet-spots" are:
1 - If you either have Photoshop skills or are collaborating with someone who is - JavaFX provides the only real platform that lets you take Photoshop and generate a UI. Normally you mock-up in Photoshop and try your best to replicate, JavaFX can leverage it natively.
2 - You get all of the goodies from Java libraries "for free".
3 - Can leverage the UI skills to mobile (those that JavaFX will run on anyway).
However, if you are just wanting to have a Java GUI but would rather wait for more polish on JavaFX - I would recommend grabbing MigLayout & go with Swing on Java 6u10 or later.
There are a few JavaFX apps from the JavaFX Coding Challenge; my personal favorite is Music Explorer FX.
The new version of Indaba Music's software was written in JavaFX; the old version was in Flash.
In my personal opinion I would not use JavaFX for web. Simply because HTML5 is crushing everyone in sight. Now, I totally recomend the use of JavaFX for desktop applications.
I'm developing a Java ME app & need pointers to some really good UI libraries. I did see a few such as Java ME Polish. Are there any more out there? For e.g. ebuddy's java ME app has an amazing UI and so is gmail's java ME app. What libraries would they have been using or would have they have developed it on their own?
Sun recently released and opensourced their solution to crappy looking lcdui. It is called LIghtweight UI Toolkit and can be found on lwuit.dev.java.net
We have been trying lately on kuix.. So far so good and more light weight than LWUIT
code.http://code.google.com/p/kuix
eSWT would be available for MIDlets on the latest J9 VM, as used by the Series60 3rd Edition feature Pack 2 handsets (Nokia N78, 6210, N96...) but we're mainly talking about nicer looking UI controls. Basically, a MIDlet can look much more like a native application now.
Sun has recently open-sourced LWUIT.That could also be worth a look.
Nothing beats drawing your own images on a Canvas,though. Generic layout managers in any kind of library will only get you so far. You should only look at the available technologies once you have a good idea of how many different kind of screens your application should have and what they look like.
Most of the apps with amazing UIs (Opera Mini, Gmail, any game from an AAA developer) use custom UIs developed in-house. These developers take the task of developing an UI as one more in their projects and give it personality, involving professional graphic designers. Going with a packaged library would quickly accomplish the task but it would make the application look generic and bland (less bland that with the default UI, but still bland and limited).
In short, go with a packaged UI for quick development, but don't expect the level of quality to be near the apps you mentioned.
I'm facing a similar dilemma right now. We're currently using the default, high-level LCDUI framework for the speed of development, but its severely limiting what we can do. I had thought our best option would be to use a third-party UI framework, but I'm now coninced that if we're serious about the application we should write our own. Its like anything in software, if its mission critical to your application you should write it yourself, even if it that means re-inventing the wheel.
Digitalapes has developed a framework for J2ME application development that includes a high level UI library.
The library is lightweight and well documented, you can get have a look at the Gear framework page for more information, or you can directly download the JAR and javadoc from Gear's sourceforge page.
Digitalapes blog includes also a series of tutorial about how to use the framework.
Polish has really nice set of UI components, which are skinable with css style comments.
It also features a device database for compatibility purposes.
Some tipps if you decide to go with polish (as i did):
Use eclipse and the mepose plugin. The netbeans integration is really nerve wracking.
The bulletin board is dead, so by all means !use the mailing list!.
If you are not familiar with the ant building system, you better start now.
The J2ME Polish book is not worth its money. (My opinion). The documentation on their website and the sample coded are enough to give you a solid start.
I've used SWT when deploying to a full profile J2ME (IBM J9 on PocketPC), I don't know if it is usable by MIDlets however. It's quite a nice GUI library in its own way, and far better than AWT.
Unfortunately companies usually end up designing their own GUI's when it comes to mobile development. It's the only way to have full control over your interfaces, but you should consider if it's worth the additional development time, and you're also on your own when it comes to device compatibility issues / handset bugs - of which there are plenty.
If you are happy with a less flexible interface, you can go with one of the existing libraries. I currently use J2ME GUI from http://www.garcer.com/. We get the same flexibility as with desktop development and it also features custom styling, so with a little extra effort you can make it look the way you want it to.
You can use LWUIT for the UI development in J2ME framework.