{"id":64,"date":"2007-04-06T09:07:00","date_gmt":"2007-04-06T09:07:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=64"},"modified":"2007-04-06T09:07:00","modified_gmt":"2007-04-06T09:07:00","slug":"das-swing-application-framework-jsr-296","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2007\/04\/das-swing-application-framework-jsr-296\/","title":{"rendered":"Das &quot;Swing Application Framework&quot; (JSR 296)"},"content":{"rendered":"<p>Hans Mueller schrieb schon f\u00fcr JavaOne 2007 eine kleine Einf\u00fchrung in das vielleicht zuk\u00fcnftige Swing-Framework (<a href=\"http:\/\/jcp.org\/en\/jsr\/detail?id=296\">JSR 296<\/a>) in Java 7: <a title=\"http:\/\/weblogs.java.net\/blog\/hansmuller\/archive\/ts-3399-final.pdf\" href=\"http:\/\/weblogs.java.net\/blog\/hansmuller\/archive\/ts-3399-final.pdf\">http:\/\/weblogs.java.net\/blog\/hansmuller\/archive\/ts-3399-final.pdf<\/a>. Neben <a title=\"https:\/\/appframework.dev.java.net\/intro\/index.html\" href=\"https:\/\/appframework.dev.java.net\/intro\/index.html\">https:\/\/appframework.dev.java.net\/intro\/index.html<\/a>&nbsp;ist nun unter <a title=\"http:\/\/weblogs.java.net\/blog\/diverson\/archive\/2007\/04\/swing_applicati.html\" href=\"http:\/\/weblogs.java.net\/blog\/diverson\/archive\/2007\/04\/swing_applicati.html\">http:\/\/weblogs.java.net\/blog\/diverson\/archive\/2007\/04\/swing_applicati.html<\/a>&nbsp;ist nun eine weitere keine Beschreibung dazugekommen.<\/p>\n<p>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 <strong>Application<\/strong>, die den Lebenszyklus einer Swing-Applikation definiert.<\/p>\n<p><img decoding=\"async\" alt=\"JSR-296 Architecture Diagram\" src=\"https:\/\/appframework.dev.java.net\/intro\/images\/architecture-diagram.png\"><\/p>\n<p>Von <a title=\"https:\/\/appframework.dev.java.net\/intro\/index.html\" href=\"https:\/\/appframework.dev.java.net\/intro\/index.html\">https:\/\/appframework.dev.java.net\/intro\/index.html<\/a><\/p>\n<p>Im Allgemeinen werden eigene Klassen dann von <strong>Application <\/strong>abgeleitet.<\/p>\n<pre>public class MySwingApp extends <b>Application<\/b> {<br \/>    JFrame mainFrame = null;<br \/>    @Override protected void <b>startup<\/b>( String[] args ) {<br \/>        mainFrame = new JFrame();<br \/>        mainFrame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );<br \/>        mainFrame.pack();<br \/>        mainFrame.setVisible( true );<br \/>    }<br \/>    public static void main( String[] args ) {<br \/>        <b>launch<\/b>( MySwingApp.class, args );<br \/>    }<br \/>}<\/pre>\n<p><\/p>\n<p>In <strong>startup()<\/strong> werden nun die Komponenten aufgebaut. Dabei k\u00f6nnen Elemente wie das <strong>JLabel<\/strong> auf Eigenschaften aus Property-Dateien zur\u00fcckgreifen:<\/p>\n<pre>JLabel l = new JLabel();<br \/>l.setName( \"myLabel\" );<\/pre>\n<p><\/p>\n<p>Unter dem Namen myLabel gibt es einen Property-Eintrag:<\/p>\n<pre>myLabel.text=Text vom Label.<\/pre>\n<p><\/p>\n<p>Auch der Name des Fensters l\u00e4sst sich so setzen:<\/p>\n<pre>Application.title=Hallo Welt!<\/pre>\n<p><\/p>\n<p>Um einem <strong>JButton<\/strong> eine <strong>Action <\/strong>zuzuweisen (Listener sind nicht mehr n\u00f6tig), bekommt jede Aktion einen Namen, die in einer <strong>Map <\/strong>eingetragen ist.<\/p>\n<pre>ApplicationActionMap aMap = ApplicationContext.getInstance().getActionMap( getClass(), this );<br \/>JButton btn = new JButton();<br \/>b.setName( \"myButton\" ); <br \/>b.setAction( aMap.get( \"los\" ) );<\/pre>\n<p><\/p>\n<p>Die Aktionen selbst kommen von Methoden, die mit @Action annotiert sind.&nbsp; Standardm\u00e4\u00dfig bestimmt der Methodenname den Namen der Action, doch das kann mit <strong>name<\/strong> \u00fcberschrieben werden.<\/p>\n<pre>@Action( name = \"los\" );<br \/>public void myAction( ActionEvent e ) {<br \/>  System.out.println( \"Es hat klick gemacht.\" );<br \/>}<\/pre>\n<p><\/p>\n<p>Properties der Schaltfl\u00e4chen lassen weitere Eigenschaften zu:<\/p>\n<pre>myButton.Action.text = &amp;Klick mich...<br \/>myButton.Action.accelerator = control K<br \/>myButton.Action.shortDescription = klicke und du wirst was erleben<\/pre>\n<p><\/p>\n<p>Weitere Links:<\/p>\n<p><\/p>\n<ul><\/p>\n<li><a title=\"http:\/\/www.javalobby.org\/java\/forums\/t71186.html\" href=\"http:\/\/www.javalobby.org\/java\/forums\/t71186.html\">http:\/\/www.javalobby.org\/java\/forums\/t71186.html<\/a><\/li>\n<p><\/p>\n<li><a title=\"http:\/\/www.artima.com\/lejava\/articles\/swingframework.html\" href=\"http:\/\/www.artima.com\/lejava\/articles\/swingframework.html\">http:\/\/www.artima.com\/lejava\/articles\/swingframework.html<\/a><\/li>\n<p><\/p>\n<li><a title=\"https:\/\/appframework.dev.java.net\/\" href=\"https:\/\/appframework.dev.java.net\/\">https:\/\/appframework.dev.java.net\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Hans Mueller schrieb schon f\u00fcr JavaOne 2007 eine kleine Einf\u00fchrung in das vielleicht zuk\u00fcnftige 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&nbsp;ist nun unter http:\/\/weblogs.java.net\/blog\/diverson\/archive\/2007\/04\/swing_applicati.html&nbsp;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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-64","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/64","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=64"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/64\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=64"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=64"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=64"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}