Swing NixieClock

During my search for some i²c stuff i found these nixie tube clocks. So my first idea was to create such a clock in Swing.
Here is the original i took as master…

To my surprise it was really not a big deal to complete this task and it tooks me around 4 hours until i got my first homebrew swing nixie clock.
Because i received some question on how i did this i will shortly explain it here: weiterlesen

 

Swing Apollo space program mission timer

Still on vacation i took the chance to spent some time on watching movies i ordered some time ago and so i watched several movies related to the Nasa moon landing program which lead to the landing on the moon in july 20th 1969.
In the movie MoonShot which tells the story of Apollo 11 and it’s flight to the moon in 1969 i was fascinated by the board computer of the command module and took a picture of the mission timer which looked great to me…

MissionTimerOriginal.jpg

Because i love coding in Java and those things could be easily done in Java’s swing framework i decided to create a little mission timer by myself and that’s a picture of the result

MissionTimerJava.png

I don’t know if it’s useful to anybody but for those of you who like it, i added the source as netbeans project here MissionTimer.zip

You will find two classes in the project, a JFrame and a TimerPanel. (If you would like to use the TimerPanel in another project you just can drag’n drop the TimerPanel class onto a JFrame, JPanel etc.)

To start or stop the timer you just have to click on the panel with the left mousebutton. To reset the panel just doubleclick on the panel.

Enjoy it and keep swinging…

 

Custom swing component

During my vacation i’m playing around with the SunSPOT’s from Sun Microsystems which are fantastic little gadgets. (Please find more information about them here.)
I attached a combined temperature/humidity sensor to one of my spots and used xmpp protocol (with smack library) to communicate with my SunSPOT host application from wherever I am.
To visualize the measured values I needed something sexy and because there was nothing ready to go I created two little „instruments“ that I would like to share with you.

And here they are:

First a gauge:

ishot-2.png

Second Java Swing component is a display (yes I know it’s inspired by Apples iTunes):

ishot-1.png

Third custom Swing component a combination of the display with a led panel:

ishot-3.png

I think I’ll have to do some work at the 3d-effect of the rounded rectangle but as a first prototype they looked ok to me.

You can find my presentation on custom Swing components here, the Netbeans project for the components in the article can be downloaded here: Instruments, the Netbeans project for the application from the slides is here: SD.zip

If you are interested, please leave a comment…

 

JavaFX Composer

Seit dem 15.12.2009 läßt sich der auf der Devoxx 2009 angekündigte JavaFX Composer unter Netbeans 6.8 als Plugin installieren.
Voraussetzung dafür sind Java 6 und eben Netbeans 6.8. Da meine ersten JavaFX Versuche meistens kläglich gescheitert sind, war ich schon ganz gierig auf das Tool und habe mir heute morgen mal 2 Stunden mit diesem Tool gegönnt.

ishot-3.png

Hier mein erstes Fazit:

Die Installation des Composer’s war sehr einfach, man geht in Netbeans in die Plugins und macht dort ein „Reload Catalog“.
Daraufhin findet man unter den „Available Plugins“ nun auch den sog. „JavaFX Composer“.
Diesen wählt man dann einfach aus und installiert das Plugin…fertig.
Legt man jetzt ein neues JavaFX Desktop Projekt an, so öffnet sich ein Design View, ähnlich wie man es vom eingebauten Swing Matisse GUI Builder gewohnt ist.
An der rechten Seite finden sich die zur Zeit zur Verfügung stehenden Controls (wie z.B. Panel, Button, Check Box, etc.), welche sich durch drag’n drop auf die Designfläche ziehen lassen.
Dort kann man nun wie gewohnt die Größe und Position anpassen. Der Properties Dialog, welchen man unterhalb der Palette findet ist konfigurierbar gestaltet, was es einem ermöglicht lediglich die Parameter zu sehen, welche man im Regelfall ändern möchte. Muß ich bspw. häufig Transformationsparameter (z.B. Rotation etc.) für Controls einstellen, so kann ich diese Properties über einen extra Knopf in der Liste sichtbar machen…nette Idee, wünschte ich mir auch für den Swing GUI Builder.

Über dem Designbereich findet man einen Bereich, in welchem States definiert werden können. So kann ich bspw. ein Textfeld auswählen und die Transparenz für dieses Feld auf 50% setzen. Danach lege ich einen neuen State an und setze die Transparenz für dieses Feld auf 100%.
Nun kann ich durch einen Knopf, welcher sich neben jeder Property im Properties Dialog befindet in einem extra Dialog den Übergang zwischen den States festlegen, dabei kann man bspw. Parameter wie Dauer der Transition, Übergangsart (linear, ease in , ease out, etc.) festlegen.

ishot-1.png

Somit lassen sich relativ einfach animierte UserInterfaces zusammenklicken, ohne das man dazu in den mir noch etwas befremdlich wirkenden JavaFX Code eintauchen muß.
Für eine Preview Version läuft der Composer recht stabil, es braucht jedoch ein wenig Zeit, bis man sich mit dem Prinzip der States angefreundet hat.

Sun hat natürlich vorgesorgt und hat für den Composer ein Wiki angelegt, welches bereits umfangreiche Informationen zur Arbeitsweise mit dem Composer enthält. Ihr findet das Wiki hier.
Der Composer ist mit Sicherheit ein ganz wichtiges Tool um die Verbreitung von JavaFX zu fördern, da man nun endlich in der Lage ist ein UserInterface für eine Applikation zusammenzuklicken. Das komplette coden der UI ist doch für viele ein Hemmnis, vor allem wenn man noch nicht mit der Syntax von JavaFX und dessen SceneGraph vertraut ist.

 

Devoxx Konferenz: Tag 3

Der dritte Tag Devoxx – der erste Tag der Deboxx Konferenz.
Es gab viele interessante Talks – unter anderem Java Enterprise Edition 6 (JEE6), für das mit Glassfish zum 10. Dezember 2009 eine Referenzimplementierung angekündigt wurde. Ansonsten hat Mark Reinhold für Java JDK 7 Closures in Aussicht gestellt, die eine einfache Version der viel diskutierten Closures für Java darstellen könnten. Ganz im Sinne der 80/20 Regel sieht Reinhold da die Chance einen Großteil der Wünsche der Community zu befriedigen, aber evtl. ein paar Randfälle außen vor zu lassen. weiterlesen

 

Devoxx update #2

Zusammenfassung des zweiten Tages:

Folgende Talks waren heute auf dem Programm:

  • Effects in Flex von Chet Haase

    Dieser Talk war im Programm zunächst gar nicht vorgesehen, da aber ein anderer Talk ausgefallen war ist Chet Haase eingesprungen…..zum Glück.

    Also ich war ja gestern schon von Adobe’s Catalyst Tool sehr angetan und als ich heute gesehen habe, was mit Flex 4.0 alles so geht, war ich ja schon ein wenig neidisch. In dem Talk zeigte Chet was sich mit Flex 4.0 in Sachen Animationen so alles getan hat und ich muß sagen Hut ab, einfacher geht es bald nicht mehr. Wenn ich also bspw. ein Userinterface in Flex gestalte, kann ich diesem sog. States hinzufügen. Nun kann man jedem State gewisse Eigenschaften verpassen wie bspw. Opacity, Position, Size etc. danach kann ich bestimmen, wie die Transitions zwischen den einzelen States aussehen sollen und fertig. Dabei wird also z.B. ein Anfangszustand eines Objektes angegeben (z.B. Farbe=Rot) und ein Endzustand (z.B. Farbe=Blau) und dann legt man nur noch fest wie der Übergang von Anfang- zu Endzustand ablaufen soll (mit sog. „easing“ oder ohne) und das war’s.

    Alles in allem für einen Ersatztalk sehr beeindruckend.

  • Turbocharge your UI in Android von Romain Guy

    Auch dieser Talk war ein Ersatztalk für einen ausgefallenen Talk und war im Prinzip die Wiederholung eines Talks von der letzten Google IO Konferenz. Es ging im Prinzip darum wie man in Android das Ansprechverhalten seiner Anwendung verbessern kann bzw. möglichst hohe Framerates erreicht um ein responsives Userinterface zu erhalten. Hier war der eine oder andere Trick dabei, welcher sich auch durchaus in Swing übertragen ließ, alles in allem aber nicht so wertvoll für mich, da ich leider nicht über ein Android Phone verfüge.

  • The Java FX platform – a java developers guide von Stephen Chin

    In diesem Talk wurde zum einen noch einmal das Binding Prinzip in Java FX erklärt, es wurde auf das WidgetFX Project von Stephen Chin eingegangen und ein Program entwickelt, welches Devoxx bezogene Tweets in einem schicke Fenster ausgibt. Das Beste an diesem Talk war jedoch die Einlage von Tor Norbey, welcher ein brandneues Java FX RAD Tool vorgestellt hat, welches in Netbeans 6.8 als Preview enthalten sein wird. Und dieses Tool ließ mich dann wieder hoffen, denn im Prinzip fanden sich hier viele Dinge wieder, welche ich bereits gestern und heute in Flex Talks gesehen hatte. Man kann in Zukunft in Netbeans direkt in eben dem neuen RAD Tool UserIntefaces in Java FX zusammenklicken. Hier lassen sich nun auch States und Transitions zwischen diesen States definieren. Das ist genau das Tool, worauf ich gewartet habe, denn wer hat schon Lust alles von Hand zu coden. Mit Hilfe dieses RAD Tools wird es sehr sehr einfach werden ansprechende UserInterfaces zu bauen, welche Transitions mit Animationen beeinhalten und ich denke das wird Java FX eine großen Schub geben.
    Es sei angemerkt, daß es sich hierbei nicht um das Java FX Authoring Tool handelt, welches Tor auf der Java ONE vorgestellt hat sondern um ein zweites in Netbeans integriertes Tool. Jetzt heißt es also warten auf Netbeans 6.8

  • A year of monitoring with Java-Monitor von Kees Jan Koster
    In diesem Talk ging es um das Java-Monitor Tool und viele Informationen zu den verschiedenen Versionen des Garbage Collectors in der JVM. Der Talk war wirklich sehr interessant, aber leider mußte der Author etliche Slides überspringen, da er mit der Zeit nicht hinkam, somit freue ich mich schon auf die Version in Parleys, damit ich mir das ganze noch einmal ausführlich anschauen kann.
  • So, daß war’s erst mal wieder und jetzt geht’s auf zu Tag 3 der Devoxx

 

Devoxx update

Zusammenfassung des ersten Tages:

Thomas und ich sind ja diese Woche auf der Devoxx in Antwerpen (Belgien). Diese Konferenz ist die größte Java Entwicklerkonferenz in Europa und auf jeden Fall eine Reise wert.

Folgende Talks standen bei mir heute auf dem Programm:

  • Introduction to Java Generics von Prof. Eric Steegmans

    Der Talk war im Vorlesungsstil wobei Prof. Steegmans anhand einer BoundedArrayList den Einsatz von Generics in Java erklärt hat. Interessant waren die Hinweise auf Tücken und Problem, welche beim Einsatz von Generics in Java auftreten können. Es wurde jeweils dargestellt, wie sich Generics in Java im Vergleich zu Generics in anderen Programmiersprachen verhalten. Besonderes Augenmerk wurde auf den Punkt „Type Erasure“ in der JVM gelegt, welche die Abwärtskompatibilität zu älteren Java Versionen sicherstellt und auch den Hauptunterschied zu dem Einsatz von Generics in anderen Programmiersprachen darstellt.

  • JSF 2: Keep the progress coming von Dan Allen, Peter Muir und Andy Schwartz
    Angekündigt war der Talk unter anderem auch für Neulinge auf dem Gebiet JSF, womit ich mich eindeutig identifizieren konnte und somit teilnahm. Leider muß ich hier gestehen, daß ich den Saal nach der Hälfte der Zeit (1.5 Stunden) verlassen habe, weil ich kein Wort verstanden habe. Ich vermute für Leute mit JSF / JSP / Facelet Hintergrund war der Talk durchaus interessant, aber für Neulinge war er eindeutig zu detailverliebt und nach meiner Meinung ungeeignet.
  • Design to development Part 1: Adobe „Flash“ Catalyst von Chat Haase
    Allein der Name des Speakers war für mich schon Grund genug an diesem Talk teilzunehmen, denn wer Chat Haase kennt (er ist ein ehemaliger Sun Mitarbeiter, welcher lange Jahre im Java2D Bereich tätig war und letztes Jahr von Sun zu Adobe gewechselt ist), der weiß, daß er ein hervorragender Speaker ist, welcher es versteht das Publikum zu fesseln. Obwohl es sich ja hierbei nicht um Java sondern um Adobe Flash handelte war das Tool Adobe Catalyst wahrlich faszinierend. Mit diesem Tool kann man ein Userinterface zusammenstellen, welches man vorher zum Teil in Adobe Photoshop oder Adobe Illustrator erstellt hat. Als Beispiel wurde hier z.B. ein Suchfeld aus einem Adobe Photoshop Bild erzeugt, ein in Adobe Illustrator designter Button hinzugefügt und eine ScrollBar ebenfalls aus einem Adobe Photoshop Bild erzeugt. Man kann sich das so vorstellen, daß man in Catalyst ein Adobe Photoshop Bild öffnet und dort z.B. ein gemaltes Textfeld selektiert, dann sagt man in Catalyst, daß es sich bei dieser Selektion um ein Textfeld handelt und fertig ist das funktionstüchtige Textfeld, welches sich dann gleich als SWF-File kompilieren und starten läßt. Alles in allem eine eindrucksvolle Demo, wobei man jedoch auch sagen muß, daß es sich bei dem Tool um eine Betaversion handelt und die finale Version erst nächstes Jahr erscheinen wird.
  • Design to development Part 2: Adobe „Flash“ Builder von Christophe Coenraets
    In diesem Talk wurde das Userinterface aus dem vorigen Talk verwendet und mit Daten aus einer Serveranwendung gefüllt. Dieser Talk war wieder eher etwas für Flash Entwickler und nicht für Unwissende wie mich, jedoch wurde die Anbindung einer Flash Anwendung an Daten von einem Webserver sehr anschaulich dargestellt. Alles in allem kann ich hier den Jungs von Adobe nur ein Lob aussprechen für die wirklich gelungene Präsentation eines kompletten Workflows.

So das war nun der erste Tag der Devoxx und wir freuen uns schon auf Tag 2…

 

Kanban: Agile und lean

Kanban in Action – so lautet der Titel eines dreistündigen interaktiven Vortrages auf der Devoxx 2009. Olav Maassen motivierte auf anschauliche Weise die Ideen und Konzepte dieser agilen Methodik.
Sehr faszinierend waren die eingebauten Übungen, bei denen man typisches Verhalten an sich selber beobachten konnte – die teils negativen Aspekte versucht Kanban hierbei zu vermeiden oder zumindest abzumildern. weiterlesen

 

SwingDemo Projekt

In Ergänzung zum Talklet „Swing and you’re winning“ der JUG Münster vom 03.11.2009 finden alle Interessierten hier die Applikation als Java Webstart Version. Der Talk soll die Möglichkeiten vermitteln, welche Swing zur Verfügung stellt vor allem im Hinblick auf sog. „custom components“.
Für die SwingDemo wird auf jeden Fall Java 6 benötigt.

jws_launch.gif

SwingDemo

Desweiteren stehen Euch hier die kompletten Quellen als Netbeans Projekt zum Download zur Verfügung.

Es soll noch ein Workshop zu dem Talk folgen, bei welchem dann mit den bestehenden Quellen ein wenig rumgespielt werden soll. Der Termin hierzu wird noch auf http://www.jug-muenster.de bekannt gegeben.

Viel Spaß beim coden…