Domanda

Ogni volta che leggo Swing dicono che sono componenti leggeri. Quindi ho appena cercato su Google Swing e ho scoperto che significa che Swing non dipende dai colleghi nativi. È per questo che sono chiamati " peso leggero " ? Intendo per leggerezza, ho pensato che forse i componenti Swing occupano meno memoria dei componenti AWT. Non è così?

È stato utile?

Soluzione

Swing è considerato leggero perché completamente implementato in Java, senza chiamando il sistema operativo nativo per disegnare i componenti dell'interfaccia utente grafica.

D'altra parte, AWT (Abstract Window Toolkit) è un toolkit per pesi massimi, in quanto semplicemente effettua chiamate al sistema operativo per produrre i suoi componenti della GUI.

La sezione Evolution of the Swing Paint System da l'articolo Painting in AWT and Swing spiega la differenza tra leggero e pesante :

  

Quando era l'API AWT originale   sviluppato solo per JDK 1.0   esistevano componenti pesanti   ("pesi massimi" significa che il   il componente ha il suo nativo opaco   finestra). Ciò ha consentito all'AWT di fare affidamento   fortemente sul sottosistema di vernice in ciascuno   piattaforma nativa.

     

[...]

     

Con   l'introduzione del peso leggero   componenti in JDK 1.1 (un "leggero")   il componente è uno che riutilizza il file   finestra nativa più vicina   antenato dei pesi massimi), l'AWT aveva bisogno   per implementare l'elaborazione della vernice per   componenti leggeri nel condiviso   Codice Java.

Poiché Swing è implementato in Java, presenta alcuni svantaggi nelle prestazioni, tuttavia, ho sentito che le prestazioni sono migliorate nelle recenti versioni di Java.

Il vantaggio di Swing è che ha molti più componenti disponibili come JTable e JList che sono più grafici ed estensibili dei componenti forniti in AWT, consentendo lo sviluppo di applicazioni più ricche di grafica.

Altri suggerimenti

Leggero vs pesante è una domanda su come vengono implementati i componenti dell'interfaccia utente. I componenti pesanti avvolgono gli oggetti del sistema operativo, i componenti leggeri no. Sono implementati rigorosamente nel JDK.

Questo è semplicemente un addendum che si rivolge ai pesi massimi e ai pesi leggeri in un altro contesto: il modello di programmazione.

In questo contesto Swing è decisamente pesante e complicato. Non è considerato adatto per l'implementazione di thin client e dato il fatto che oggi ci sono così tanti dispositivi diversi, Swing è, in effetti, una tecnologia morta, anche se Oracle non l'ha ritirata ... eppure (vedi anche JavaFX come alternativa ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top