Java Swing

Swing è un Framework per Java. E' una parte di Java Foundation Classes (JFC). Swing include una Interfaccia grafica (GUI), dei widget come le caselle di testo, pulsanti, pannelli e tabelle.
I widget Swing forniscono una GUI più sofisticata rispetto alla precedente Abstract Window Toolkit. Siccome sono scritti un puro Since they are written in pure Java, funzionano allo stesso modo su tutte le piattaforme (Su cui java gira), al contrario delle AWT le quali sono legate al sistema grafico nativo del sistema operativo. Swing supporta il look and feel non tramite quello che viene fornito nativamente dal gestore delle finestre, ma tramite una sua emulazione. Questo significa che puoi ottenere un qualsiasi L&F supportato su qualsiasi piattaforma. Lo svantaggio di questi componenti heavyweight è quello di una più lenta esecuzione. Il vantaggio è una uniformità di visualizzazione tra svariate piattaforme.
Storia
La Internet Foundation Classes (IFC) era una libreria grafica per Java sviluppata originalmente dalla Netscape Communications Corporation e rilasciata per la prima volta nel 16 dicembre 1996.
Il 2 aprile 1997, Sun Microsystems e Netscape Communications Corporation annunciarono la loro intenzione di combinare IFC con altre tecnologie per creare la Java Foundation Classes. Oltre ai componenti originalmente forniti da IFC, Swing introdusse un meccanismo che permetteva il look and feel di ogni componente di una applicazione di essere alterato senza dover fare cambiamenti significativi al codice sorgente. L'introduzione del supporto al look and feel a plug-in permise ai componenti Swing di emulare l'apparenza dei componenti nativi mantenendo comunque il beneficio di essere indipendenti dalla piattaforma. Questa caratteristica rende molto semplice l'avere un look di una applicazione individuale che appare significativamente differente da tutti gli altri programmi nativi.
Originalmente distribuito come una libreria scaricabile separatamente, Swing fu inclusa come parte della Java Standard Edition fin dalla versione 1.2. Le classi Swing sono contenuto nella gerarchia package.
Architettura
Swing è un modello di programmazione per il Java:
- indipendente dalla piattaforma
- orientato ai componenti
- estendibile
- modificabile
- configurabile
- loosely-coupled
- leggero
- a spedizione di eventi
- un framework GUI MVC
- con un thread unico
- Indipendente dalla piattaforma: Swing è indipendente dalla piattaforma sia in termini di linguaggio (Java) sia della sua implementazione (una renderizzazione universale e non nativa dei widget).
- Estendibile: Swing è una architettura molto suddivisa la quale permette l'aggancio di varie implementazioni modificate di specifiche interfacce: Gli utenti possono creare le loro personali implementazioni dei componenti per modificare le implementazioni di default. In generale, gli utenti Swing possono estendere il framework con: estensione delle classi esistenti; fornitura di implementazioni native dei componenti base.
- Orientato ai componenti: Swing è un framework basato a componenti. La differenza tra oggetti e componenti è leggera: concisamente, un componente è un oggetto con determinate caratteristiche di comportamento conosciute e specificate. Gli oggetti Swing emettono eventi in modo asincrono, hanno caratteristiche legate ad essi stessi, e rispondono da un ben preciso set di comandi (Specifico per componente). Specialmente i componenti Swing Java Beans, seguono le specifiche dell'architettura Java Bean.
- Modificabile: Dato il modello di renderizzazione programmatico del framework di Swing, è possibile ottenere un preciso controllo del dettaglio sulla renderizzazione dei suoi componenti. Come discorso generale, la rappresentazione grafica di un componente swingè un combinazione di un set standard di elementi, come i bordi, le rientranze, decorazioni, etc. Solitamente, gli utenti modificheranno un componente standard di Swing (come una JTable) assegnando a loro dei bordi, colori, sfondi specifici come proprietà del componente. Il componente base, userà queste proprietà (o settaggi) per determinare la modalità più appropriata per disegnarsi. Comunque, è anche possibile creare controlli GUI completamente nuovi, con un livello di rappresentazione visuale molto dettagliato (Per esempio, i componenti Swing supportano le trasparenze.)
- Configurabile: Swing, facendo un uso pesante dei meccanismi di runtime e dei percorsi di renderizzazione indiretta, ha la possibilità di modificare a runtime cambiamenti anche fondamentali nei suoi settaggi. Per esempio, una applicazione basata su Swing può cambiare il suo look and feel a runtime (per esempio, dal look and feel di MacOS a quello di Windows XP). Inoltre, gli utenti possono fornire le loro proprie implementazioni di look and feel, il che permette di ottenere cambiamenti uniformi nei look and feel di applicazioni Swing esistenti, senza un continuo ritocco al codice sorgente dell'applicazione.
- Leggero: La magia della configurabilità di Swing è anche dovuta al fatto che non necessita di usare i controlli della GUI dell' OS nativi per la rappresentazione, ma piuttosto 'disegna' i suoi controlli costantemente, attraverso l'uso delle api 2D di Java. Inoltre, un componente Swing non ha un corrispettivo nell'insieme dei componenti nativi dell'OS, ed è quindi libero di renderizzare se stesso in ogni modo possibile con le librerie grafiche di Java 2D.
See also
References
- Matthew Robinson: Swing, Manning, ISBN 1-930110-88-X
- David M. Geary: Graphic Java 2, Volume 2: Swing, Prentice Hall, ISBN 0-13-079667-0
- James Elliott, Robert Eckstein, Marc Loy, David Wood, Brian Cole: Java Swing, O'Reilly, ISBN 0-596-00408-7
- Kathy Walrath, Mary Campione, Alison Huml, Sharon Zakhour: The JFC Swing Tutorial: A Guide to Constructing GUIs, Addison-Wesley Professional, ISBN 0-201-91467-0
- Joshua Marinacci, Chris Adamson: Swing Hacks, O'Reilly, ISBN 0-596-00907-0
External links
- Java Swing Tutorialby Hemanth Balaji
- The Swing Tutorial
- The Swing Connection
- Template:Javadoc:SE-guide
- The Swing architecture
- JavaDesktop
- Java Look And Feel
- ClientJava.com
- Presentation "Professional Swing: Creating Polished Apps, Part 1/2" by Ben Galbraith
- Presentation "Professional Swing: Creating Polished Apps, Part 2/2" by Ben Galbraith
- Article "What does "Swing is Slow" mean?" by Sermet Yucel
- Article "Java Desktop Development" by Andrei Cioroianu
- Article "BlackMamba: A Swing Case Study" by Ashwin Jayaprakash
- Articles on AWT/Swing
- Citations from CiteSeer
- Swing wiki containing best practices, tips, tricks and howto tutorials
- JGoodies
- Free trial "Java SWING Components" - extended Java SWING components.