2012-04-02 8 views
0
wieder verwendet

Wenn Swing vollständig in Java geschrieben ist und das Fenster des Heavyweight (HW) -Vorgängers wiederverwendet, was ist die Logik dahinter? Ich meine, wenn Swing HW-Komponente Klasse erweitert, dann würde wieder HW-Komponenten native Anrufe aufrufen, so dass irgendwie native Anrufe aufgerufen wird. Aber Swing ist geringes Gewicht, also wo mein Verständnis ist fehlgeschlagen?Wie Swing tatsächlich natives Fenster von HeavyWeight Ancestor in Codestufe

Antwort

0

Die nativen Komponenten, in die Swing-Grafiken gezeichnet werden, sind nicht Teil der Java-Klassenhierarchie. Dort sind bestimmte Komponenten, die als Schwergewicht bezeichnet werden, aber nur weil ihre Grafikunterstützung mehr oder weniger direkt einer nativen Komponente entspricht.

Die meisten Swing-Komponenten malen in einen Puffer, der von einem schwergewichtigen Vorfahren in der visuellen Hierarchie bereitgestellt wird. Dieser schwergewichtige Vorgänger ist dafür verantwortlich, die Java-gezeichneten Grafiken zur Anzeige in die native Komponente zu verschieben.

+0

Aber schließlich wird die Zeichnung in der nativen Umgebung ausgeführt, nur eine Sache ist jetzt eine Schnittstelle ist da zwischendurch, um diesen Schritt zu verarbeiten, und wenn dieser Puffer für Grafikzeichnen verantwortlich ist, ist es wie Zeichnen von Grafiken im Schwergewicht und leicht Komponenten, beide nehmen fast die gleiche Zeit oder beide können als teuer angesehen werden –

+0

Abgesehen von dem, was ich beschrieben habe, ist es an der internen Implementierung von AWT zu bestimmen, wo und wann native Operationen angewendet werden. Einige Implementierungen kopieren möglicherweise einfach einen Bildpuffer, andere können Graphics2D-Anforderungen in native Grafikgrundelemente auf der verfügbaren Zeichenfläche übersetzen. – technomage

Verwandte Themen