Jump to content

Набор инструментов абстрактного окна

(Перенаправлено с Java AWT )

Форма Windows с некоторыми примерами AWT

Abstract Window Toolkit ( AWT ) — это набор оригинальный платформо-зависимый инструментов для работы с окнами , графикой и пользовательского интерфейса виджетами , предшествовавший Swing . AWT является частью Java Foundation Classes (JFC) — стандартного API для предоставления графического пользовательского интерфейса (GUI) для программы Java. AWT также представляет собой набор инструментов с графическим интерфейсом для ряда профилей Java ME . Например, для профилей конфигурации подключенных устройств требуются среды выполнения Java на мобильных телефонах для поддержки набора средств Abstract Window Toolkit.

Когда Sun Microsystems впервые выпустила Java в 1995 году, виджеты AWT обеспечивали тонкий уровень абстракции над базовым собственным пользовательским интерфейсом. Например, создание флажка AWT приведет к тому, что AWT напрямую вызовет базовую собственную подпрограмму, создавшую флажок. Однако флажок в Windows отличается от флажка в macOS или различных типах Unix . Некоторые разработчики приложений предпочитают эту модель, поскольку она обеспечивает высокую степень точности базового встроенного набора оконных инструментов и бесшовную интеграцию с собственными приложениями. Другими словами, программа с графическим интерфейсом, написанная с использованием AWT, при запуске в Windows выглядит как собственное приложение Microsoft Windows, но та же программа выглядит как собственное приложение Apple Macintosh при запуске на Mac и т. д. Однако некоторым разработчикам приложений эта модель не нравится, потому что они предпочитают, чтобы их приложения выглядели одинаково на каждой платформе.

В J2SE 1.2 инструментарий Swing в значительной степени заменил виджеты AWT. Помимо предоставления более богатого набора виджетов пользовательского интерфейса, Swing рисует свои собственные виджеты (используя Java 2D для вызова подпрограмм низкого уровня в локальной графической подсистеме) вместо того, чтобы полагаться на модуль пользовательского интерфейса операционной системы высокого уровня. Swing предоставляет возможность использовать либо «внешний вид» собственной платформы , либо кросс-платформенный внешний вид («Внешний вид Java»), который выглядит одинаково во всех оконных системах.

Архитектура

[ редактировать ]

AWT предоставляет два уровня API :

AWT также предоставляет приложениям некоторые функции более высокого уровня, такие как:

Ни AWT, ни Swing по своей сути не являются потокобезопасными . Поэтому код, который обновляет графический интерфейс или обрабатывает события, должен выполняться в потоке диспетчеризации событий . Несоблюдение этого требования может привести к взаимоблокировке или гонке. Чтобы решить эту проблему, служебный класс под названием SwingWorker позволяет приложениям выполнять трудоемкие задачи после событий взаимодействия с пользователем в потоке диспетчеризации событий.

Смешивание компонентов AWT и Swing

[ редактировать ]

Если существует версия компонента AWT в формате Swing, она будет начинаться с J- и должна использоваться исключительно вместо версии AWT. Например, в Swing используйте только JButton, а не класс Button. Как упоминалось выше, основные классы AWT, такие как Color и Font, по-прежнему используются в Swing как есть.

При рисовании в Swing используйте JPanel и переопределите PaintComponent(Graphics g) вместо использования методов Paint() AWT.

До Java 6 Update 12 смешивание компонентов Swing и базовых виджетов AWT часто приводило к нежелательным побочным эффектам: виджеты AWT появлялись поверх виджетов Swing независимо от их определенного z-порядка . Эта проблема заключалась в том, что архитектура рендеринга двух наборов инструментов виджетов сильно отличалась, несмотря на то, что Swing заимствовал тяжелые верхние контейнеры у AWT. [ 1 ]

Начиная с версии Java 6 Update 12 , можно смешивать виджеты Swing и AWT без проблем с z-порядком. [ 2 ]

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MyApp {

    public static void main(char[] args) {
        Frame frame = new Frame("Application");
        
        frame.add(new Label("Hello!"));
        frame.setSize(500, 500);
        frame.setLocationRelativeTo(null); // Centers the window
        
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                frame.dispose(); // Releases native screen resources
            }
        });
        
        frame.setVisible(true);
    }
}

Выполнение

[ редактировать ]

Поскольку AWT является мостом к базовому собственному пользовательскому интерфейсу, его реализация в новой операционной системе может потребовать много работы, особенно если она включает в себя любой из виджетов графического пользовательского интерфейса AWT, поскольку каждый из них требует разработки своих собственных аналогов. с нуля.

новый проект Caciocavallo Был создан , который предоставляет API Java на основе OpenJDK для упрощения реализации AWT в новых системах. [ 3 ] [ 4 ] В проекте успешно реализованы виджеты AWT с использованием Java2D . [ 5 ] Все необходимые модификации ядра JDK с тех пор были перенесены в OpenJDK 7 . [ 6 ] это означает, что Java теперь можно использовать в графическом стеке, отличном от тех, которые предусмотрены официальным JDK ( X Window System , OpenGL или DirectX ), подключив внешнюю библиотеку и установив некоторые системные свойства. Серверная часть DirectFB для Качокавалло [ 7 ] находится в стадии разработки, как и серверная часть HTML5 ; цель состоит в том, чтобы развернуть существующие приложения Swing (без поддержки Java) как обычные веб-приложения, работающие на веб-сервере. [ 7 ] [ 8 ]

См. также

[ редактировать ]
  1. ^ Фаулер, Эми (1994). «Смешивание тяжелых и легких компонентов» . Сан Микросистемс . Архивировано из оригинала 23 декабря 2011 года . Проверено 17 декабря 2008 г.
  2. ^ «Ошибка/RFE исправлена ​​в текущей сборке JDK 6u12» . Сан Микросистемс . 12 декабря 2008 г. Архивировано из оригинала 17 декабря 2008 г. Проверено 17 декабря 2008 г.
  3. ^ Торре, Марио (2 марта 2008 г.). «ОКОНЧАТЕЛЬНОЕ ПРЕДЛОЖЕНИЕ: Портативные интерфейсы с графическим интерфейсом» . Архивировано из оригинала 19 марта 2012 года . Проверено 7 сентября 2008 г.
  4. ^ Кеннке, Роман (18 декабря 2008 г.). «Обзор архитектуры Качокавалло» . Проверено 7 сентября 2008 г.
  5. ^ Кеннке, Роман (3 сентября 2008 г.). «Сверстники Cacio Swing AWT» . Архивировано из оригинала 13 марта 2012 года . Проверено 7 сентября 2008 г.
  6. ^ «Сколько было выдвинуто вверх по течению?» . openjdk.java.net. 20 сентября 2009 г. Архивировано из оригинала 19 марта 2012 г. Проверено 7 марта 2010 г. Вам больше не нужны эти патчи: с последней версией FontManager все теперь в исходном коде, поэтому просто используйте репозиторий Cacio, он полностью автономен.
  7. ^ Jump up to: а б Кеннке, Роман (28 июля 2011 г.). «JDK7 и крутость Качио» . Проверено 8 августа 2011 г.
  8. ^ Эйссерер, Клеменс. «HTML5/Canvas серверная часть для Качокавалло (GNU-Classpath)» . Архивировано из оригинала 21 марта 2012 года . Проверено 8 августа 2011 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0396007695125f5e3249c4304ded8728__1706884860
URL1:https://arc.ask3.ru/arc/aa/03/28/0396007695125f5e3249c4304ded8728.html
Заголовок, (Title) документа по адресу, URL1:
Abstract Window Toolkit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)