Das "Swing Application Framework" (JSR 296)

Hans Mueller schrieb schon für JavaOne 2007 eine kleine Einführung in das vielleicht zukünftige Swing-Framework (JSR 296) in Java 7: http://weblogs.java.net/blog/hansmuller/archive/ts-3399-final.pdf. Neben https://appframework.dev.java.net/intro/index.html ist nun unter http://weblogs.java.net/blog/diverson/archive/2007/04/swing_applicati.html ist nun eine weitere keine Beschreibung dazugekommen.

Um die Aufgaben kurz zusammenzufassen: Das Swing-Framwork soll eine (sehr?) leichtgewichtige Alternative zu Eclipse RPC und dem NetBeans Framework werden, um Actions, Properties und Voreinstellungen komfortabel zusammenzubringen. Zentral ist die Klasse Application, die den Lebenszyklus einer Swing-Applikation definiert.

JSR-296 Architecture Diagram

Von https://appframework.dev.java.net/intro/index.html

Im Allgemeinen werden eigene Klassen dann von Application abgeleitet.

public class MySwingApp extends Application {
JFrame mainFrame = null;
@Override protected void startup( String[] args ) {
mainFrame = new JFrame();
mainFrame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
mainFrame.pack();
mainFrame.setVisible( true );
}
public static void main( String[] args ) {
launch( MySwingApp.class, args );
}
}

In startup() werden nun die Komponenten aufgebaut. Dabei können Elemente wie das JLabel auf Eigenschaften aus Property-Dateien zurückgreifen:

JLabel l = new JLabel();
l.setName( "myLabel" );

Unter dem Namen myLabel gibt es einen Property-Eintrag:

myLabel.text=Text vom Label.

Auch der Name des Fensters lässt sich so setzen:

Application.title=Hallo Welt!

Um einem JButton eine Action zuzuweisen (Listener sind nicht mehr nötig), bekommt jede Aktion einen Namen, die in einer Map eingetragen ist.

ApplicationActionMap aMap = ApplicationContext.getInstance().getActionMap( getClass(), this );
JButton btn = new JButton();
b.setName( "myButton" );
b.setAction( aMap.get( "los" ) );

Die Aktionen selbst kommen von Methoden, die mit @Action annotiert sind.  Standardmäßig bestimmt der Methodenname den Namen der Action, doch das kann mit name überschrieben werden.

@Action( name = "los" );
public void myAction( ActionEvent e ) {
System.out.println( "Es hat klick gemacht." );
}

Properties der Schaltflächen lassen weitere Eigenschaften zu:

myButton.Action.text = &Klick mich...
myButton.Action.accelerator = control K
myButton.Action.shortDescription = klicke und du wirst was erleben

Weitere Links:

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.