2010-01-14

Texte in Swing unterstreichen

Um in Swing einen Text auf bestimmte Weise auszuzeichnen, also zum Beispiel halbfett oder kursiv erscheinen zu lassen, reicht ganz wenig Code (stamp ist ein JLabel, font eine Instanz von Font):
stamp.setFont(font = list.getFont().deriveFont(Font.BOLD));
Oder:
font = list.getFont().deriveFont(Font.PLAIN);
Aber haben Sie mal versucht, Text zu unterstreichen? Die Klasse Font kennt hierfür keine Konstante. Wenn man weiß wie, ist es eigentlich ganz einfach… :-)
Map<TextAttribute, Integer> fontAttributes = new HashMap<TextAttribute,Integer>();
fontAttributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
font = font.deriveFont(fontAttributes);

2010-01-13

Noch einmal TKSwingComponents

Screenshot von BarClock-Demo
Eifrigen (oder besser: langjährigen) Leserinnen und Lesern dieses Weblogs dürfte diese Grafik bekannt vorkommen. Das Bild zeigt eine reichlich merkwürdige Uhr – die 6 Segmente stellen je zwei Ziffern für Stunden, Minuten und Sekunden dar. Die Balkenuhr ist jetzt als BarClock in meine Bibliothek TKSwingComponents gewandert.

2010-01-12

TKSwingComponents

TKSwingComponents

Ich habe immer mal wieder Swing-Komponenten in diesem Weblog vorgestellt. Meistens habe ich die Quelltexte irgendwo auf meiner Homepage abgelegt. Das ist natürlich fürs kurze “drüber gucken” völlig ausreichend, aber wenn man die Klassen in Programmen verwenden möchte, wird es schnell kompliziert. Deshalb habe ich das Projekt TKSwingComponents initiiert, mit dem ich meine Komponentenbemühungen etwas bündeln möchte. Wie gewohnt ist die Klassenbibliothek open source – sie wird unter der GNU Lesser General Public Licence version 3 veröffentlicht. Den Anfang machen zwei alte Bekannte, eine Datums- sowie eine Ordnerauswahl. So nach und nach möchte ich die Bibliothek um andere kleinere Swing-Lösungen von mir erweitern. Fehlt Ihnen eine wichtige Komponente in Swing? Schreiben Sie mir doch…

2010-01-09

Ein neugieriger Blick in die Zukunft

Spielzeug-LKW aus meiner Kindheit Man kommt von seinen Lastern einfach nicht los.
Wer meinen letzten Blog-Eintrag gelesen hat, kann sich vorstellen, dass ich damit aber nicht den bezaubernden kleinen Spielzeug-LKW aus meiner Kindheit meine. Nein, es ist mein Hang zu Client-Themen. In diesem Beitrag soll es um Java 7 geben, genauer gesagt, darum, was es dem Client-Entwickler bringen könnte. Was es ihm nicht bringt – JSR 295 und 296- wurde oft genug betrauert, ich will diese “ollen Kamellen” (fürs Erste :-)) nicht wieder ausgraben. Also, was könnte ein Java 7 an Neuerungen für den Swing-Entwickler bereit halten?
Schon seit geraumer Zeit steht auf Suns Seiten der Build b76 von Milestone 5 der Java™ Platform, Standard Edition 7 zum Download bereit. Installiert man diesen Meilenstein, erhält man einen “Stand der Dinge” – also ein Java, das in bestimmten Teilen dem fertigen Java 7 entsprechen wird. Wie viel dies sein wird, muss sich freilich noch zeigen.
SwingSet2 mit dem Nimbus Look and Feel
SwingSet2 mit dem Nimbus Look and Feel
Das Nimbus Look and Fell ist nicht neu – es startete als Projekt auf java.net und fand schon seinen Weg in Java SE 6 Update 10. Zu finden ist dort im Paket com.sun.java.swing.plaf.nimbus. In Java 7 wird es unter javax.swing.plaf.nimbus abgelegt, gehört also (im Hinblick auf seinen Paketnamen) “offiziell” zu Swing.
Ein weiteres auf java.net gehostetes Projekt wird ziemlich sicher auch im entgültigen Java 7 zu finden sein: JXLayer in Gestalt der Klasse JLayer. Vereinfacht ausgedrückt dient diese Klasse dazu, Komponenten zu “dekorieren” und diverse Maus- und Tastaturereignisse abzufangen. Man kann das Ganze beispielsweise dazu verwenden, Bedienelemente mit einer Validierungsfunktion zu versehen (wobei das nur eine von unzähligen Einsatzmöglichkeiten ist). Ich habe in der Ausgabe 11/2009 der iX in meinem Artikel Schöner wohnen darüber geschrieben.
So, weiter mit den Neuerungen… Hand aufs Herz – kennen Sie die folgende Komponente?
Demo der Klasse JColorChooser
Demo der Klasse JColorChooser
Unter Java SE 6 sah die noch so aus:
Demo der Klasse JColorChooser unter Java SE 6
Demo der Klasse JColorChooser unter Java SE 6
Mit einem beherzten Erkennen Sie die Unterschiede? entlasse ich Sie in eine wohlverdiente Gedenkminute. ;-) Falls Sie sich tatsächlich intensiver mit den Neuerungen dieser Komponente befassen möchten/müssen, sollten Sie einen Blick auf diesen JavaLobby-Beitrag werfen.
Der (im oben verlinkten Beitrag angesprochene) DatePicker scheint in der November-Fassung übrigens noch nicht enthalten gewesen zu sein – zumindest habe ich ihn nirgends entdeckt. Anfang 2009 hatte Danny Coward in einem Blog-Eintrag auf das JCalendar-Projekt verlinkt. Ob tatsächlich diese Komponente Einzug halten wird oder eher eine Version von JXDatePicker, wird sich zeigen. Ich werde Sie natürlich auf dem Laufenden halten.
Zum Schluss möchte ich Ihnen noch eine kleine Aufstellung zeigen, welche Klassen im Paket javax.swing (Unterpakete sind nicht erfasst) hinzugekommen bzw. weggefallen sind.
Neue bzw. entfallene Klassen im Paket javax.swing
Neue bzw. entfallene Klassen im Paket javax.swing
Damit möchte ich meine Bestandsaufnahme beenden. Im Februar wird möglicherweise der 6. Meilenstein veröffentlicht. Ich bin schon gespannt, was sich darin getan hat. Zum Schluss möchte ich noch betonen, dass es in anderen Client-Bereichen sehr wohl Aktivitäten gegeben hat. Beispielsweise wurden die neuen Deployment- und GrafikFeatures von Java SE 6 Update 10 übernommen. Funktionale Erweiterungen von Swing sind aber halt kaum zu finden.

2010-01-02

TKWeek 1.1.0

TKWeek-Programmlogo
Ich freue mich, mal wieder etwas über eines meiner Android-Programme schreiben zu können. TKWeek ist seit heute in Version 1.1.0 im Android Market zu finden; das Update behebt ein paar kleinere Probleme mit kleinen Displays (ich finde das HTC Tattoo einfach niedlich :-)) und bietet die neue Funktion Freitag der 13..
TKWeek Hauptbildschirm
Deren Zweck ist schnell erklärt. Man blättert durch die Jahre und sieht die Namen derjenigen Monate, deren 13. auf einen Freitag fällt. Wikipedia hat übrigens einen recht netten Eintrag zu diesem Thema.
Übrigens bin ich immer auf der Suche nach interessanten Datums- oder Kalenderfunktionen. Wenn Sie also eine Idee haben, was ich in TKWeek noch einbauen könnte, schreiben Sie mir doch einfach.