---
title: 'Das "Swing Application Framework" (JSR 296)'
url: 'https://www.tutego.de/blog/javainsel/2007/04/das-swing-application-framework-jsr-296'
markdown: 'https://www.tutego.de/blog/javainsel/2007/04/das-swing-application-framework-jsr-296.md'
date: '2007-04-06'
description: '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…'
taxonomy:
  category:
    - Allgemein
---

# Das "Swing Application Framework" (JSR 296)

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Das "Swing Application Framework" (JSR 296)

06.04.2007 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Hans Mueller schrieb schon für JavaOne 2007 eine kleine Einführung in das vielleicht zukünftige Swing-Framework ([JSR 296](http://jcp.org/en/jsr/detail)) in Java 7: [http://weblogs.java.net/blog/hansmuller/archive/ts-3399-final.pdf](http://weblogs.java.net/blog/hansmuller/archive/ts-3399-final.pdf "http://weblogs.java.net/blog/hansmuller/archive/ts-3399-final.pdf"). Neben [https://appframework.dev.java.net/intro/index.html](https://appframework.dev.java.net/intro/index.html "https://appframework.dev.java.net/intro/index.html") ist nun unter [http://weblogs.java.net/blog/diverson/archive/2007/04/swing\_applicati.html](http://weblogs.java.net/blog/diverson/archive/2007/04/swing_applicati.html "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](https://appframework.dev.java.net/intro/images/architecture-diagram.png)

Von [https://appframework.dev.java.net/intro/index.html](https://appframework.dev.java.net/intro/index.html "https://appframework.dev.java.net/intro/index.html")

Im Allgemeinen werden eigene Klassen dann von **Application** abgeleitet.

```java
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:

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

Unter dem Namen `myLabel` gibt es einen Property-Eintrag:

```properties
myLabel.text=Text vom Label.
```

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

```properties
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.

```java
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.

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

Properties der Schaltflächen lassen weitere Eigenschaften zu:

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

Weitere Links:

- [http://www.javalobby.org/java/forums/t71186.html](http://www.javalobby.org/java/forums/t71186.html "http://www.javalobby.org/java/forums/t71186.html")
- [http://www.artima.com/lejava/articles/swingframework.html](http://www.artima.com/lejava/articles/swingframework.html "http://www.artima.com/lejava/articles/swingframework.html")
- [https://appframework.dev.java.net/](https://appframework.dev.java.net/ "https://appframework.dev.java.net/")

Kategorien: [Allgemein](https://www.tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Eclipse auf das Basis von Swing](https://www.tutego.de/blog/javainsel/2007/04/eclipse-auf-das-basis-von-swing.md)
- Next: [Java EE 6 -- das Spiel geht weiter](https://www.tutego.de/blog/javainsel/2007/04/java-ee-6-das-spiel-geht-weiter.md)
