Update der Swing JIDE Komponenten auf Version 3.3.4

Kleine Änderungen bei den http://www.jidesoft.com/products/component.htm:

  • (Common) Added CheckBoxListSelectionModel#setCheckAllEntry() to control the default behavior of CheckBoxList for "all" entry.
  • (Common) Added isEnsureFontExistence to FontNameConverter.
  • (Common) Added IconBorder class which can paint an icon as part of the border which is perfect to be used in the table cell through the CellStyle feature.
  • (Common) Added a new component StyledToolTip.
  • (Component) Set tooltip to the PregressStatusBarItem so that the message can still be shown even when the message is too long.
  • (Grids) Fixed so that CellStyleTableHeader could support the new StyledToolTip.
  • (Grids) Added overlayCellPainter and underlayCellPainter to CellStyle.
  • (Grids) Added HeaderLineWrapModel interface to configure the line wrap properties for column header easier.
  • (Grids) Added paintCellUnderlay method to paint the cell background below the cell content.
  • (Grids) Added JideTableTransferHandler to accept importing data by default.
  • (Grids) Added MarginExpandablePanel#getIcon(Node) to customize the icon easier.
  • (Pivot) Added two APIs in PivotTablePane to customize the data table selection behavior. See the enhancement request here.
  • (TreeMap) Improved robustness of colormap creation.
  • (TreeMap) Added support for opening File instances through context menu.
  • (TreeMap) Added support for ordering by ascending sizes.

Mehr unter http://www.jidesoft.com/history/.

Gastbeitrag: AWT-Schwergewichte nach vorne, bitte!

Der Code hinter Container.add(Component comp) hat sich immer wieder gewandelt, und lange Zeit war es problematisch, AWT- und Swing-Komponenten zu mischen. Seit Java 7 stellt das AWT jedoch jede mögliche Kombination von beliebigen Komponenten zuverlässig dar – den zusätzlichen Rechenaufwand bekommt jeder zu spüren, der etwa versucht, eine JScrollPane mit 50.000 JLabels zu bestücken.


Sehr sehr cool: Swing-Anwendungen im Browser

Schaut euch


Interessant für Anwender mobiler Endgeräte, die kein Swing können (Android) oder dürfen (iPad).

Die HTML-Anwendung besteht aus einem bisschen JavaScript, die Interaktionen zum Server schickt, also Mausklicks, Tastendrücke, usw. Dabei entstehen Events wie


die an http://icedrobot.de:9091/EventReceiver per POST gesendet werden. Die Swing-Anwendung (die werden dafür richtig viel Speicher brauchen denke ich, das kommt vielleicht noch mal raus…) läuft nur auf dem Server und der reagiert mit geänderten Bildschirmausschnitten, die wieder auf den Brower Canvas gezeichnet werden. Ist so wie ein remote VNC-Server (http://code.google.com/p/jsvnc/), schöne Sache das. HTML5 wir lieben dich Smile


“Schön” im Sourcecode der Kommentar:

//Exclude WebKit for now, as it will trigger a memory leak.

//TODO: should be version dependent, as its fixed in Chrome 14

JComboxBox mit Separator nutzen

Standardmäßig unterstützt die JList und auch JComboBox keine Separatoren, doch die Unterteilung in Segmente ist in der Praxis sehr nützlich. Microsoft Word und PowerPoint benutzt sie zum Beispiel, um die zuletzt vom Benutzer ausgewählten Zeichensätze prominent oben in der Liste zu haben (Excel dagegen nicht).

Wir wollen diese Möglichkeit nachbilden, und dabei noch einiges über Modelle und Renderer lernen.


Insubstantial 6.2

Nach dem Kirill Grouchnikov in sein Substantial keine Zeit mehr investiert, gibt es vom Nachfolgeprojekt ein erstes ernsthaftes Update: http://shemnon.com/speling/2011/04/insubstantial-62-release.html. Unter anderen gehört Maven dazu, Änderungen laut Webseite:

  • Gradle – the codebase has been adjusted to use Gradle as the build system. This has allowed for seampless deployment into the maven repositories. For Trident, laf-plugin, and substance-swingx this represents the entirity of the changes
  • Maven Distribution – this deserves it’s own bullet point. The jars are available from day one in the maven repositories.
  • NPE Bugs – most of the code changes are to deal with possible null pointer exceptions. No one in their right mind would use a JTable as a table cell renderer, but it does happen in the wild.
  • Flamingo API addition – a patch from Jonathan Gileswas applied to allow commands to be removed from the ribbon.
  • Java 7 fixes – there is a bug fix in Java’s Color Choosers that broke substance 6.1. This is fixed in Substance 6.2, so it should run on Java 7 now!

Amino: Ein neues Gui-Framwork

Josh stellt in seinem Blog-Beitrag http://weblogs.java.net/blog/joshy/archive/2010/10/09/announcing-amino-new-ui-toolkit-desktop-java ein neues Gui-Framwork Amino (http://leonardosketch.org/amino/) vor.

Amino is a next generation graphics library and UI toolkit. Though originally built as support for Leonardo Sketch it is now it’s own incubator project.  Amino is a 100% open source Java library that provides:

  • a 2D/3D scenegraph with multiple backends (Java2D, JOGL, and more coming).
  • a set of UI controls, skinnable with CSS.
  • Utility classes to help you build desktop apps quickly.
  • is extremely testable.
  • 100% open source (BSD), redistributable, and embeddable.
  • 100% Java, ready for use by any JVM dynamic language (Groovy, JRuby, Jython, JavaScript, JavaFX Script, etc.)

Erweiterungen von Swing sind:

    • Uses an event bus instead of listeners on each component, enabling better separation of model and view
    • A background task API to handle threading for you.
    • Mixes a retained mode scenegraph with immediate mode paint APIs so you can work at the abstraction level you prefer.
    • There are no Look & Feel classes. All UI skinning is done directly with CSS 3, even the default L&F.
    • If you use the (experimental) JOGL backend you can directly mix 2D graphics with OpenGL code.
    • All controls can be referenced by ID, similar to JavaScript libs, enabling further separation of concerns.
    • Amino has a tool called AppBundler which generates Mac OSX .app bundles as well as JNLP builds. The user should never know that your app is written in Java, or any other language. They will just love your app.

Noch sehen die Gui-Componenten gammelig aus aber es kann was werden (ist ja alles “nur” CSS).

Update von SwingX auf Version 1.6.2

Jan Haderke, ein Commiter des SwingX Projekts, schreibt:

As it became almost a tradition we have rolled out next SwingX release just before the SwingLabs BOF at JavaOne last night.

You can get the release from our website, or directly from the java.net or also from the maven central repo. Please note that the artifactID has changedfrom swingx to swingx-core due to changes in the structure of the project.

Thanks a lot to all who contributed to this release with both the bug reports and the fixes.

Ein Kommentator lästert gleich, dass zwar Maven unterstützt wird, aber das POM falsch ist.

SwingX nutzt auch Hudson (http://swinglabs.java.sun.com/hudson/), schön. (Kohsuke Kawaguchi war bei einem Interview auf Oracle Dev zu sehen, sehr sympathisch der Typ. Schade, dass der von Sun/Oracle gegangen ist.) Hudson (http://hudson-labs.org/changelog) hat vor ein paar Tagen auch eine neues Release veröffentlicht.


Google veröffentlicht die Instantiations-Tools für lau

Der Google Web Toolkit Blog berichtet heute von neuen GWT-Tools: http://googlewebtoolkit.blogspot.com/2010/09/google-relaunches-instantiations.html.

In early August, Google acquired Instantiations, a company known for its focus on Eclipse Java developer tools, including GWT Designer. We’re happy to announce today that we’re relaunching the following former Instantiations products under the Google name and making them available to all developers at no charge:

  • GWT Designer
    Powerful Eclipse-based development tools that enable Java developers to quickly create Ajax user interfaces using Google Web Toolkit (GWT)
  • CodePro AnalytiX
    Comprehensive automated software code quality and security analysis tools to improve software quality, reliability, and maintainability
  • WindowBuilder Pro
    Java graphical user interface designer for Swing, SWT, GWT, RCP, and XWT UI frameworks
  • WindowTester Pro
    Test GUI interactions within Java client rich applications for the SWT and Swing UI frameworks

Now that these products are available again, we hope you’ll start using them within your GWT projects. Meanwhile, our next step is to more deeply unify them into the GWT family of tools by blending the fantastic Instantiations technology into the Google Plugin for Eclipse (GPE). So, there’s much more to come, including things we’re pretty sure you’ll like, such as UiBinder support in GWT Designer.

You can download any of the tools from the GWT download page. If you have questions or comments we’d love to hear from you. The best place to discuss the tools above is at http://forums.instantiations.com. As always, continue to discuss GWT and GPE at the main GWT Group.

We would love to stay in better touch with you as we have more news about how we are integrating the Instantiations products into the Google Web Toolkit suite. Sign up if you’d like to receive email updates on these products and other developer tools.

Sehr cool. Der nicht gepflegte Gui-Builder VE von Eclipse dürfte damit Vergangenheit sein.

Gibt doch mal euren Eindruck.

Kirill Grouchnikov legt Substance, Flamingo, (Java) Trident auf Eis

Aus http://old.nabble.com/Continuing-development-of-substance,-flamingo-and-others-td29568644.html:

I am currently suspending support for Substance, Flamingo, Trident and related plugins / demo projects.  I do not have any plans to delete any downloadable binaries, change the licensing terms or delete the projects themselves, or to allow others to take ownership of the original projects.  Please respect the licensing terms.
Thanks, Kirill

Sehr schade.

Sehr hübsche Swing Gauge und LCD-Komponenten

Gerrit Grunwald schrieb mit eine kurze EMail und machte mich auf seine Komponenten aufmerksam, die absolut heiß sind.

ishot-1.png ishot-3.png

ishot-2.png ishot-5.png

ishot-4.png ishot-10.png

ishot-11.png ishot-8.png

ishot-9.png Radar.png

ishot-6.png ishot-7.png



Altimeter.png Clock.png




Eine großartige Arbeit mit viele Liebe zum Detail. Was mir auch gefällt ist ein Konverter von Fireworks-Dateien in Java 2D Zeichenanweisungen.

PS: Wer noch weitere tolle Swing Bibs kennt, bitte vorstellen und teilen. Weitere von mir gibt es hier: http://www.tutego.de/java/additional-java-swing-components.htm

SwingX 1.6.1 released

SwingX ist nicht gerade bekannt für eine Open Source Lib, die jeden Monat ein fettes Update raushaut. Doch nun gibt es wieder ein paar Änderungen, die SwingX auf die Version 1.6.1 bringt. Karl listet ein paar Neuerungen auf:

  • Added prompt support.
  • Added new Highlighters and HighlighterPredicates and improved the rendering API.
  • Lots of JXDatePicker and JXMonthView improvements.
  • More Mustang sorting improvements.
  • AutoComplete improvements.

Swing Application Framework fliegt aus Java 7 raus

Unter http://weblogs.java.net/blog/alexfromsun/archive/2009/08/saf_and_jdk7.html ist von Alexander Potochkin nun zu lesen:

After much discussion it’s become clear that the Swing Application Framework API as it is today hasn’t reached consensus and we feel still needs further design work done.

Since the SAF API was committed to milestone 5 of JDK7 and that time is already here, this date is now impossible, and we need to decommit SAF from any specific JDK 7 milestone

Mit AjaxSwing Swing Anwendungen als Web-Anwendungen laufen lassen

Das macht die Swing – AJAX bridge. Das SwingSet2 Demo ist schon mal ein guter Start. Die Entwickler sagen, dass das Demo ohne Quellcodemodifikationen läuft. Lauf FAQ laufen 95% der Anwendungen vernünfitg nach 30 Minuten Konfiguration. Die Vorraussetzungen für den Web-Server, das das hostet ist minimal: es läuft schon ab Java 1.2. Auch für den Client sind die Anforderungen wirklich gering: Internet Explorer 4+, FireFox 1.2+ bzw. jeder HTML 4.0 Browser. (Vielleich sieht daher das LaF von AjaxSwing standardmäßig so schrottig aus. Lässt sich aber alles anpassen.) Probleme kann es im Einzelfall etwa beim Eventing geben, wenn der Browser nicht alle Events weitergibt. Auch bei Multithreaded-Anwendungen kann es Probleme geben, wenn im AWT-Event-Thread neue Threads aufgemacht werden und die die Gui modifizieren (auch mit SwingUtilities.invokeLater/Now). Da AjaxSwing auch schon bei JComponent mit der Abbildung beginnt, laufen auch Bibliotheken wie SwingX. Mit einen SnapshotRenderer für „harte“ Fälle lässt sich auch serverseitig rendern und dann als JPG in die Seite einfügen.

SwingX 1.0

Ich habe ja schon nicht mehr damit gerechnet: SwingX hat es in den 1.0 Status geschafft. Die Fixes/Enhancements sind aber eigentlich minimal und die Freigabe hätte schon früher kommen können …

Und wenn man liest, “From now on, the Java 5 compatibility will no longer be maintained.” heißt das nur, dass die kommenden Versionen mindestens Java 6 erwarten; SwingX 1.0 ist selbstverständlich unter Java 5 lauffähig.

Quaqua Look And Feel. Das bessere Mac OS X LaF

Quaqua ist ein Swing-LaF, was besonders gut an die Apple Human Interface Guidelines ranreicht.

Quaqua Look And Feel - Metalworks

Das Demo  läuft auch unter Windows.

Java Webstart

Features (von der Webseite):

  • (Nearly) Native User Experience
    Quaqua user interface delegates closely look and behave like their native counterparts. Complex user interface components, such as JFileChooser and JColorChooser, are close enough to make end users feel comfortable with them.
  • Blends into OS X Designs
    Quaqua supports three OS X designs: Tiger, Panther, Jaguar. Quaqua automatically chooses the right design for the current operating system.
  • Alternative Styles
    Quaqua offers alternative styles for many user interface elements. Such as small styles for most of the components, as well as a striped style for tables, lists and trees. Jaguar-design like tabbed panes with stacking tabs are also supported.
  • Additional Components
    Quaqua provides Swing implementations of NSBrowser and NSSheet (named JBrowser and JSheet).
  • Clean Layout
    Laying out Aqua components with Java is quite challenging. Quaqua provides an API for component alignment based on visual criteria (baseline, visual bounds, preferred gaps). JScrollPane’s automatically avoid overlaps with the grow-boxes of windows.
  • Localized in four languages
    Quaqua is localized in the following languages: German, French, Italian and English.

Neben dem LaF für Standardkomponenten gibt es mit JBrowser und JSheet noch zwei “Spezialkomponenten”.

Die Lizenz ist License (LGPL or BSD), und die Doku mit vielen Screenshots. Tolle Arbeit!

Ehrlicher Kommentar: "Swing 2: Pissing in the Wind"

Elliott Hughes hat unter http://elliotth.blogspot.com/2009/02/swing-2-pissing-in-wind.html einen ehrlichen (bösen) Kommentar zu Projekt Swing 2 abgegeben. Mit der Kritik kann ich im Wesentlichen anschließen. Vielleicht ist aus diesem Grund auf der Homepage http://kenai.com/projects/swing2/ auch noch kein einziger Topic aufgeführt und Quellcode verfügbar. War vermutlich nur ’ne verrückte Idee, denn ein Fork macht wenig Sinn und eine Intergration im Kern der Java SE ist nötig. Zum Weiterlesen über Swing 2: