it-swarm.com.de

Was ist der Unterschied zwischen Swing und AWT?

Kann mir bitte jemand erklären, was der Unterschied zwischen Swing und AWT ist?

Gibt es Fälle, in denen AWT sinnvoller ist als Swing oder umgekehrt?

213
Samiksha

AWT ist eine Java Schnittstelle zum GUI-Code des nativen Systems, der in Ihrem Betriebssystem vorhanden ist. Es funktioniert nicht auf jedem System gleich, obwohl es versucht.

Swing ist eine mehr oder weniger reine Java-GUI. Mithilfe von AWT wird ein Betriebssystemfenster erstellt, und anschließend werden Bilder von Schaltflächen, Beschriftungen, Texten, Kontrollkästchen usw. in dieses Fenster gezeichnet. Außerdem wird auf alle Mausklicks, Tastatureingaben usw. reagiert, um selbst zu entscheiden, was zu tun ist anstatt das Betriebssystem damit umgehen zu lassen. Somit ist Swing zu 100% portabel und plattformübergreifend gleich (obwohl es skinnbar ist und ein "Plug-and-Feel" -Verhalten aufweist, das es mehr oder weniger so aussehen lässt, wie die nativen Fenster und Widgets aussehen würden).

Dies sind sehr unterschiedliche Herangehensweisen an GUI-Toolkits und haben viele Konsequenzen. Eine vollständige Antwort auf Ihre Frage würde versuchen, all diese zu untersuchen. :) Hier sind ein paar:

AWT ist eine plattformübergreifende Schnittstelle. Obwohl das zugrunde liegende Betriebssystem oder das native GUI-Toolkit für seine Funktionalität verwendet wird, bietet AWT nicht Zugriff auf alle Funktionen dieser Toolkits. Erweiterte oder neuere AWT-Widgets, die möglicherweise auf einer Plattform vorhanden sind, werden auf einer anderen Plattform möglicherweise nicht unterstützt. Features von Widgets, die nicht auf jeder Plattform gleich sind, werden möglicherweise nicht unterstützt oder funktionieren auf jeder Plattform anders. Früher haben die Leute viel Mühe darauf verwendet, dass ihre AWT-Anwendungen plattformübergreifend konsistent funktionieren. Beispielsweise könnten sie versuchen, Aufrufe von Java in systemeigenen Code umzusetzen.

Da AWT native GUI-Widgets verwendet, kennt Ihr Betriebssystem sie und kann sie voreinander stellen, während Swing-Widgets aus Sicht Ihres Betriebssystems bedeutungslose Pixel in einem Fenster sind. Swing selbst übernimmt das Layout und das Stapeln Ihrer Widgets. Das Mischen von AWT und Swing wird in hohem Maße nicht unterstützt und kann zu lächerlichen Ergebnissen führen, z. B. zu systemeigenen Schaltflächen, die alles andere in dem Dialogfeld verdecken, in dem sie sich befinden, weil alles andere mit Swing erstellt wurde.

Da Swing versucht, alles Mögliche in Java) zu tun, abgesehen von den sehr rohen Grafikroutinen, die von einem nativen GUI-Fenster bereitgestellt werden, kam es im Vergleich zu AWT zu einer erheblichen Leistungsbeeinträchtigung Dies ist jedoch in den letzten Jahren durch optimierte JVMs, schnellere Maschinen und (ich nehme an) Optimierung der Swing-Interna dramatisch geschrumpft Fast nicht von einer Anwendung zu unterscheiden, die native Widgets verwendet. Einige werden sagen, dass es viel zu lange gedauert hat, bis dieser Punkt erreicht ist, aber die meisten werden sagen, dass es sich lohnt.

Schließlich möchten Sie vielleicht auch SWT (das für Eclipse verwendete GUI-Toolkit und eine Alternative zu AWT und Swing) ausprobieren, was eine Rückkehr zu der AWT-Idee darstellt, auf native Widgets über Java zuzugreifen.

227
skiphoppy

Der grundlegende Unterschied, den bereits jeder erwähnte, ist, dass einer schweres Gewicht und der andere leichtes Gewicht ist. Lassen Sie mich erklären, was der Begriff Schwergewicht im Grunde bedeutet, wenn Sie die awt-Komponenten verwenden, den nativen Code, der zum Abrufen der Ansichtskomponente verwendet wird wird vom Betriebssystem generiert, deshalb ist es das Aussehen und Gefühlsänderungen von OS zu OS. Wo wie bei Swing-Komponenten die Verantwortung von JVM, um die Ansicht für die Komponenten zu generieren. Eine andere Aussage, die ich sah, ist, dass Swing ist MVC-basiert und AWT nicht.

34
Access Denied

Swing vs AWT . Grundsätzlich stand AWT an erster Stelle und besteht aus einer Reihe schwerer UI-Komponenten (das heißt, sie sind Wrapper für Betriebssystemobjekte), während Swing auf AWT mit einer größeren Menge leichter Komponenten aufbaut.

Alle ernsthaften Java UI-Arbeiten werden in Swing not AWT ausgeführt, das hauptsächlich für Applets verwendet wurde.

14
cletus

Wenn AWT nützlicher ist als Swing -

  • möglicherweise zielen Sie auf eine ältere JVM oder Plattform, die Swing nicht unterstützt. Früher kam das wirklich ins Spiel, wenn Sie Applets bauten - Sie wollten auf den kleinsten gemeinsamen Nenner abzielen, damit die Leute kein neueres Java Plugin installieren mussten. Ich bin mir nicht sicher, was das ist Die derzeit am weitesten verbreitete Version des Java Plugins ist - dies kann heute anders sein.
  • einige Leute bevorzugen den nativen Look von AWT gegenüber den "nicht ganz dort" -Plattform-Skins von Swing. (Es gibt besser aussehende Skins von Drittanbietern als die Implementierungen von Swing. Übrigens) Viele Leute bevorzugten die Verwendung von AWTs FileDialog gegenüber Swings FileChooser, da es den Plattform-Dateidialog gab, an den die meisten Menschen gewöhnt waren, anstatt den "seltsamen" benutzerdefinierten Swing.
11
Nate

Aus diesem Unterschied zwischen AWT und Swing ergeben sich mehrere Konsequenzen.

AWT ist eine dünne Codeschicht über dem Betriebssystem, während Swing viel größer ist. Swing hat auch eine viel umfangreichere Funktionalität. Mit AWT müssen Sie eine Menge Dinge selbst implementieren, während Swing sie integriert hat. Für eine GUI-intensive Arbeit fühlt sich AWT im Vergleich zu Swing sehr primitiv an. Da Swing die GUI-Funktionalität selbst implementiert und nicht auf das Host-Betriebssystem angewiesen ist, kann es auf allen Plattformen, auf denen Java ausgeführt wird, eine umfassendere Umgebung bieten. AWT bietet nur begrenzt die gleichen Funktionen auf allen Plattformen, da nicht alle Plattformen die gleichen Steuerelemente auf die gleiche Weise implementieren.

Swing-Komponenten werden als "leichtgewichtig" bezeichnet, da für die Implementierung ihrer Funktionalität kein natives Betriebssystemobjekt erforderlich ist. JDialog und JFrame sind schwergewichtig, weil sie einen Peer haben. Daher sind Komponenten wie JButton, JTextArea usw. leichtgewichtig, da sie keinen Betriebssystem-Peer haben.

Ein Peer ist ein vom Betriebssystem bereitgestelltes Widget, z. B. ein Schaltflächenobjekt oder ein Eingabefeldobjekt.

9

Swing:

  1. Swing ist Teil der Java Foundation Classes.
  2. Swing-Komponenten sind plattformunabhängig.
  3. Schaukelkomponenten sind Leichtbauteile, da Schaukel oben auf awt sitzt.

AWT:

  1. AWT wird als abstraktes Fensterwerkzeug bezeichnet.
  2. AWT-Komponenten sind plattformabhängig.
  3. AWT-Komponenten sind Schwergewichtskomponenten.
7
deepika
  • swing-Komponenten bieten eine sehr flexible Benutzeroberfläche, da sie dem Model View Controller (MVC) folgen.
  • awt basiert nicht auf mvc.
  • schaukel arbeitet schneller.
  • schneller geht es nicht.
  • schaukelkomponenten sind leicht.
  • alle Komponenten sind schwer.
  • swing belegt weniger Speicherplatz.
  • awt belegt mehr Speicherplatz.
  • die Swing-Komponente ist plattformunabhängig.
  • awt ist plattformabhängig.
  • swing erfordert das Paket javax.swing.
  • ich benötige das javax.awt-Paket.
5
arsh

AWT 1. AWT belegt mehr Speicherplatz 2. AWT ist plattformabhängig 3. AWT erfordert das Paket javax.awt

schwingt 1. Swing belegt weniger Speicherplatz 2. Die Swing-Komponente ist plattformunabhängig 3. Für Swing ist das Paket javax.swing erforderlich

3