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).
Related
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/
Thanks for your answers to my previous question about GUI in java. I now wonder what are the solutions chosen by professionals to get a nice GUI, for "real" applications. Do you use swing and JComponents and just change the "look and feel" ? Do you prefer awt or another library ?
Sorry if that question sounds weird, I'm a student and I don't really know how java is used in the real world...
In our company we use Swing, as that is supported by the JVM out of the box, but we do use color coded background colors for some panels and buttons.
If we'd use something different, like SWT or Jambi we'd also have to roll out those frameworks for all platforms, and test those frameworks for all OSses and (supported) java versions. Not nice at all.
It is however fairly tricky to create a nice responsive application with Swing; so you really need to use SwingWorker and the like. With a bit of experience however you can create a nice application that way.
And even if it isn't the fastest framework to develop in, development time is really small compared to defining the functional requirements of the user interface, and testing and support when the version is released.
That said, our target is desktops. If you target mobile devices or also need a web frontend your choices may vary.
I don't believe anyone prefers AWT anymore. Swing supplanted it entirely eleven years ago, building on top of it to correct flaws in the AWT 1.0 design.
Swing isn't the only way that professionals make Java UIs. That works for desktops, but there's also JavaFX now. For the web, UIs are built using HTML, CSS, JavaScript, and JSPs.
My experience is that most organizations that want to create rich GUIs still use Swing, and manually go through all the annoyances of layout managers, etc.
The use of SWT is fairly limited to organizations that are using the Eclipse RCP as their platform. I'm not sure why it hasn't caught on outside this platform.
It's sad to admit, but Java Swing GUIs don't generally look good unless you spend a lot of time creating a more native feel for them. Even then, they often lose out on aesthetics to equivalent programs written specifically for Windows and which use Window APIs like WinForms.
The most decent Apps I saw in the last years were build using Eclipse Rich Client Platform
Eclipse uses the Standard Widget Toolkit
and provides Graphical Editing Framework (GEF)
We typically use Swing becuse it's supported in standard JREs out of the box. Normally we do the initial form design and event hookup in Netbeans and then export it to whatever we wish, Eclipse, for example.
Netbeans spits out pure Java using standard libraries (plus a jar or two you have to include) so it's no big deal designing the form in Netbeans and later moving on to something else.
Some people suggested doing form layout by hand using a layout manager. I see that as an option only if you are doing something big and very well budgeted that has to be maintained ad infinitum. Otherwise it's just too time consuming to be worth it.
We rely on SWT for our Java GUIs. Yes, you have to include an external native library, but the look and feel is native, more responsive (although Swing has become much faster in the past few years) and seamless with other apps on the target platform.
Macintosh OS X creates their own Java runtime. They give Swing components the same look and feel as native applications.
I use strictly Swing. I distribute "real" desktop applications via Web Start for both Mac and Windows that interface with the user's smart card reader.
The NetBeans IDE gives you a WYSIWYG way to create your forms. I've tried it out, and it's pretty neat, but we still use Eclipse as our IDE and design the forms in code.
I need to create a GUI application in Java. I just realized that I have different optional ways to go (SWT and Swing are among them).
I have already found out that there is a lot of discussions about what way is better and I do not want to go to deep into these discussions (I am a newbie).
I do not care about all aspects of the dilemma. I just have a few main requirements listed bellow:
It should be easy to use (easy to create what I want).
In the end I would like to have just one file which can be easily executed (without any additional tricks, settings and installations) like a standalone application.
It should be platform independent. Or more specifically, the application should work fine on Microsoft-Windows and Ubuntu (Linux).
Based on your requirements, I would say Swing. SWT has a more platform-specific look about it but Java ships with Swing built-in, there's no messing about with external libraries as with SWT although the use of Eclipse may make that much easier (I still develop quite a bit of my stuff from the command line unfortunately).
They're both easy in terms of use (well, easy once you get used to layout managers) and will work fine under both your desired platforms but since the only differentiator you seem to care about is the "without any additional tricks, settings and installations", I would stick with Swing.
That's my advice. Feel free to accept or ignore or even call me an old coot. I won't take offence :-)
I just completed a two year project creating a buisiness application, so my focus was clearly on usability and speed.
My decision in the end clearly led to SWT, for the following reasons:
Buisiness users tend to use Terminal Servers and RDP for their apps. Every Swing app is very slow over RDP, because the app has to render every pixel again and again. Try using Photoshop or Gimp over RDP and start scrolling in an image. That is the performance you have with Swing in tables.
Some very good gui components are only available as COM objects. I wanted to be able to use those, and since 100% of all buisiness customers are Windows users, they accept the fact that your software only runs on Windows. (We have linux clients, too, but only for machine input terminals, that don't need the full blown Windows GUIs)
We use SWTDesigner as a GUI designer, which is as good as SwingDesigner für Swing (which both are the best GUI designers at all). They are worth the price tag if you have to create a few hundred masks.
Our GUI looks 100% native, honors the large fonts they use on their desktops, and feels fast.
We are very satisfied with SWT, but it has some downsides:
Native Java components are a bit rare. There is more on the Swing side of life.
I would suggest that you use Java's Swing libraries if you are not familiar with Java GUI development. They are very well documented, and there are lots of tutorials on-line, including on Sun's Java website (here).
GUI development in Java is not very straightforward, but the tools available are getting better all the time. I would suggest you try out the NetBeans IDE that has a nice visual designer for GUI components. I have not used the Eclipse IDE's GUI designer, but I gather its good as well. You will need to get your head around the MVC pattern, but it should be a good learning experience.
In short, my vote goes for using Swing/JFC, especially if you are new to Java GUI development.
EDIT - You can control the look and feel of a Java APP very easily. If you use the platform independent (Metal) look and feel, your GUI will look pretty much identical on Windows and on Linux. Of course, a Java app will run just fine on Windows of *nux as long as there is a supported JVM installed.
I cannot add comment yet because I'm new here (please mod me up so I can comment) but choosing Swing or SWT depends on the IDE you're using.
If you're using Eclipse, then both are fine.
If you're using the free IntelliJ IDEA community edition, you'll prefer to use Swing because the IDE's GUI editor is "Swing only".
I take it you're using Eclipse?
Based on your requirements, I recommend using Swing:
SWT requires additional native libraries (violates item #2),
You are likely to find more instructional material on Swing (since you are a newbie),
Both solutions are somewhat platform independent and supported on both platform you mentioned but SWT is not equally supported on all platforms,
There are more WYSIWYG tools supporting Swing which may help with the learning curve.
Note that the APIs are similar and sometimes identical so learning one gives you a head start on the other.
I find Netbeans' drag and drop visual editor and pre-wired Swing Desktop Application template much easier to use that what comes bundled with Eclipse, so I'd suggest that.
It'll automatically create an executable jar, and let you create a Java Web Start launcher if you wish as well. And being Java, it's OS-independent.
Here's a link to the quickstart tutorials.
Swing,
SWT works on Ubuntu but not nearly as well as on Windows, that's at least my experience. The main reason to choose SWT is if you want to build your application on the Eclipse RCP framework( where you get a dockable views/editors, plugin mechanism, automatic updates, user roles. help browser, preference mechanism etc) or if you want your application to have that polished native look.
From my experience, if you want easy to develop Swing is the way to go. If you need good performance, then SWT is a better bet.
NOTE: The last time I did GUI development in Java was 4 years ago.
I'm looking for the following:
A nice debugger that allows me to easily view variable values if I use breakpoints.
Works very nicely in Windows 7.
Has something similar to the Toolbox pane in Visual Studio.
Built in intellisense, and code completion with the TAB key.
Long term support. I mean something that will last and stay in active development for years. I don't want a pet project IDE that will stop developing in a year. I'm just learning so it'll be very dificult at first to switch IDE's.
I'm new so I don't really know which IDE provides what I need between the two. Any help?
Well, I switched from Eclipse to Visual Studio, and I use both just about every day.
I found it hard to get used to the little differences at first, but now I am proficient in both IDEs.
I can't speak to whether or not Netbeans would be easier to learn, but Eclipse shouldn't be hard at all.
Both IDEs will provide all of the features that you have listed, and you should be able to customize both of them to get them to work almost exactly like Visual Studio.
So you want to learn Java and your first question is about which IDE to learn ? I suggest you look at BlueJ which is an IDE designed for people who want to learn Java. From my, I admit limited, experience with the IDEs you mention, BlueJ is the one which gets least in one's way when trying to learn Java as opposed to learning the IDE. Once you've exhausted BlueJ's capabilities there is an easy progression to NetBeans through a plug-in but you would probably not find it too difficult to step up to Eclipse instead.
Yes, I know you want to choose between Eclipse and NetBeans but BlueJ might be of interest.
This is a common debate, and there are obviously merits on both sides (this might be better served as a community wiki page). I prefer Eclipse, but to answer your questions as well as I can briefly:
Works very nicely in Windows 7.
Both are fine.
Has something similar to the Toolbox pane in Visual Studio.
Sorry, not familiar. Neither are short on panes, though Eclipse has a richer cache of third party plugins that might give you the experience you want.
Built in intellisense, and code completion with the TAB key.
I believe both are Ctrl-Space by default. If you're working in Java in Eclipse, there's an automated pop-up after a half second delay each time you type a separator (.) character.
Long term support. I mean something that will last and stay in active development for >years. I don't want a pet project IDE that will stop developing in a year. I'm just >learning so it'll be very dificult at first to switch IDE's.
Both are very mature products. I'd imagine Eclipse's fortunes are a little more secure simply because NetBeans might experience some turbulence during the Oracle acquisition of Sun.
My only other comment is that it's always seemed to me that Netbeans had far nicer "click-and-go" project templates out of the box, while Eclipse offered richer third party library integrations and a better debugger.
Probably both will do. Personally, I'd rather use Netbeans, because it's easier to get started right-out-of-the box. Eclipse depends more on plugins.
Why not try both and see which one suits your individual tastes more?
Both are find but if you want to build GUI's, Netbeans has the edge as it has a built in GUI builder, including a toolbox of controls to use with it.
Eclipse does not have a GUI builder. The commercial Eclipse distribution, MyEclipse does have a GUI builder - it's actually the one from Netbeans.
Neither Intellij IDEA is the Cadillac of Java IDEs
Netbeans = Great out of box experiance
Eclipse = Highly customizable with plugins and (so I've heard) slightly better intellisence-like capabilities.
If possible, I'd say try both (despite the bandwidth problem). If you get basic Java Development versions, the sizes aren't that big (48 MB for NetBeans and 92 MB for Eclipse)
I personally prefer NetBean's in-built capabilities since I don't like having to install plugins to make my experience the way I want it (and not all Eclipse plugins are free) but most of my fellow java devs prefer Eclipse's simplicity and ease of use.
I think you should try Intellij Idea, it the most powerful-intuitive java IDE I've never seen (http://www.jetbrains.com/idea/index.html). The new Community Edition is free and more than enough for java developpement. As it is highly configurable you can choose 'TAB' for auto completion, but I think you can learn from existing combinations that are well design.
Regards.
Java has some really nice IDEs available and many will do what you require.
I dont know you, but I use VS with Resharper so I m very used to those shortcuts, if you do too then have a look at IntelliJ ( they have a comunity edition)
Otherwise you can get eclipse and get the IntelliJ keymap ( or try to get the default VS keymap)
Netbeans is nice too, but I had some problems with it ( ie didnt build, rancomly crashing, etc)
Also most offer Source Control integration ( in Eclipse you have many flavours of subversion for example)
I guess you ll have to play around and find what suits you
Cheers
I have just installed Eclipse 3.4 and found out that there is not a plugin to create Swing applications yet. I also have found that there is a Matisse implementation in MyEclipse IDE, but I'd like to now whether there is such a Matisse plugin for free.
Instatiations Swing Designer is the best in my opinion. We settled on it after trying may different Eclipse plugins.
there isnt one for free. myeclipse is the only way to run matisse inside eclipse.
Although this is not a true answer to your question, you may as well look at alternative solutions in terms of layout management: Matisse and GroupLayout are neither the only way, nor the best one, to define your GUI forms.
I would suggest you take a look at:
MigLayout (very powerful and quite
simple)
and DesignGridLayout (quite powerful
and very simple)
Both are open source and have a friendly license (not GPL).
A quick search on Google will give you the links immediately.
Disclaimer: I am one of DesignGridLayout both project owners, but I point you to it because I'm convinced it provides a better way to define Swing layouts.
I did a quick Google search and found that you could use Netbeans Matisse and Eclipse in parallel:
NetBeans Wiki: UsingNetbeansMatisseAndEclipseInParallel
It seems to basically involve building the Swing GUI in Netbeans and doing the other coding tasks from within Eclipse.