Drawing in code (Part 1)

Drawing in code:

Part 1 (Drawing the prototype):

After i published my little fun swing nixieclock i got a lot of requests on how i transferred the image into swing.
Because i remember when i was starting swing development i asked myself the same questions when i saw the amazing work of swing/design guru’s like Kirill Grouchnikov, Romain Guy, Joshua Marinacci, Chet Haase, and others.
Well in the meantime i figured out how to do this and find a workflow that i would like to share here. By the way this is really nothing compared to the things these swing/design guru’s are able to do.

So here we go, first of all i have one good advice for you „Know your tools“,
which means not only java and swing but also your graphics program.

So i’m using Adobe Fireworks for that but you could also use any other kind of graphics program like Adobe Photoshop, Gimp, Inkscape etc.

I will start the tutorial with the drawing of the tube in Adobe Fireworks because it makes coding in swing so much easier if you know how to draw it in a graphics program. So the first part will be focussed on the drawing and the second part will explain how to draw all the different points in java2d/swing: weiterlesen

 

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.

 

JFokus Java Konferenz in Stockholm

Im Januar 2010 findet zum wiederholten male die JFokus Java Konferenz statt. Diese Konferenz ist die größte jährlicher Konferenz im Java Bereich und findet vom 26. – 27.01.2010 in Stockholm statt.
Falls hier Interesse besteht daran teilzunehmen, meldet Euch doch einfach beim nächsten Stammtisch und wir können evtl. eine Fahr- bzw. Fluggemeinschaft erstellen.
Hier findet Ihr weitere Informationen:

 

Swing Workshop

Am Samstag dem 28.11.2009 findet ein Workshop zum Swing Talklet vom 03.11.2009 statt.

Uhrzeit: 14:00 bis 18:00 Uhr.
Ort: Hörsaal Leo 18, Leonardocampus, Am Johann-Krane-Weg zwischen der Eishalle und dem Technologiepark (http://tinyurl.com/jugmsleo18)

Inhalt:
Da Swing ein sehr umfangreiches Framework ist, kann im Workshop lediglich ein kleiner Auschnitt
behandelt werden.
Es wird gezeigt, wie man in Swing einen Button so umgestalten kann, daß er dem aktuellen JavaFX
Design („Caspian“) entspricht. Der Workshop soll hierbei nicht als Votrag im üblichen Sinne dienen, sondern als Hands-On Session, was bedeutet, daß jeder einen Rechner mitbringen sollte.
Dabei wäre es sinnvoll mindestens Java 6 Update 10 installiert zu haben, wobei sich das Beispiel auch
unter Java 5 noch verwenden läßt.
Der Workshop soll dazu dienen in die Funktionalität von Swing reinzuschnuppern, wobei der Schwerpunkt hier auf customized components liegt und nicht auf Swing Grundlagen.
Natürlich stehen wir auch bei „Anfänger-Fragen“ jederzeit mit Rat und Tat zur Seite, soweit wir die
Antwort wissen 😉

Voraussetzungen:
– Computer mit entsprechendem JDK
– Entwicklungsumgebung (demonstriert wird auf Netbeans)
– Grundlagen Java
– Spaß am Coden…

Jeder an Desktop Java Interessierte ist herzlich dazu eingeladen teilzunehmen…

 

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