Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Пример Swing-интерфейса для X Window System.
Пример Swing-интерфейса для X Window System.

Swing — библиотека для создания графического интерфейса для программ на языке Java. Swing был разработан компанией Sun Microsystems. Он содержит ряд графических компонентов (англ. Swing widgets), таких как кнопки, поля ввода, таблицы и т. д.

Swing относится к библиотеке классов JFC, которая представляет собой набор библиотек для разработки графических оболочек. К этим библиотекам относятся Java 2D, Accessibility-API, Drag & Drop-API и AWT.

История

Начиная с версии Java 1.2 (1998 год) Swing включён в Java Runtime Environment.

Архитектура

Look and Feel

Архитектура Swing разработана таким образом, что вы можете изменять «look and feel[en]» (L&F) вашего приложения. «Look» определяет внешний вид компонентов, а «Feel» — их поведение. Sun’s JRE предоставляет следующие L&F[1]:

  • CrossPlatformLookAndFeel — это родной L&F для Java-приложений (так же называется Metal). Он используется по умолчанию, обеспечивая стандартное поведение компонентов и их внешний вид, вне зависимости от платформы, на которой запускается приложение.
  • SystemLookAndFeel — в этом случае приложение использует L&F, который является родным для системы, на которой запущено приложение. Системный L&F определяется во время выполнения. Для Windows используется «Windows» L&F, который имитирует особенности конкретной системы, на которой запущен — классический Windows, XP, или Vista. Для Linux и Solaris используется «GTK+», если установлен GTK+ 2.2 или более поздняя версия, в противном случае используется «Motif».
  • Synth — основа для создания собственных L&F.
  • Multiplexing — предоставляет возможность использования различных L&F одновременно.

Сравнение с AWT

Swing предоставляет более гибкие интерфейсные компоненты, чем более ранняя библиотека AWT. В отличие от AWT, компоненты Swing разработаны для одинаковой кросс-платформенной работы, в то время как компоненты AWT повторяют интерфейс исполняемой платформы без изменений. AWT же использует только стандартные элементы ОС для отображения, то есть для каждого элемента создается отдельный объект ОС (окно), в связи с чем AWT не позволяет создавать элементы произвольной формы (возможно использовать только прямоугольные компоненты), элементы управления на основе AWT всегда отображаются поверх Swing-элементов (так как все Swing-компоненты отображаются на поверхности контейнера).

Компоненты Swing поддерживают специфические динамически подключаемые виды и поведения[en] (англ. plugable look-and-feel), благодаря которому возможна адаптация к графическому интерфейсу платформы (то есть к компоненту можно динамически подключить другой, специфический для операционной системы, в том числе и созданный программистом вид и поведение). Таким образом, приложения, использующие Swing, могут выглядеть как родные приложения для данной операционной системы. Основным минусом таких «легковесных» (англ. Lightweight) компонентов является относительно медленная работа. Положительная сторона — универсальность интерфейса созданных приложений на всех платформах.

Принцип Lightweight

«Lightweight» означает, что компоненты Swing отрисовываются самими компонентами на поверхности родительского окна, без использования компонентов операционной системы. В отличие от «тяжёлых» компонентов AWT, в приложении Swing может иметься только одно окно, и все прочие компоненты отрисовываются на ближайшем родителе, имеющем собственное окно (например, на JFrame). В приложении могут сочетаться Swing- и AWT-элементы, хотя это может порождать некоторые проблемы — в частности, компоненты AWT всегда перекрывают Swing-элементы, а также закрывают собой всплывающие меню JPopupMenu и JComboBox. Для предотвращения этого у этих компонентов имеются методы setLightWeightPopupEnabled(boolean), позволяющие запретить использование «легковесных» всплывающих элементов. При установке свойства в true (setLightWeightPopupEnabled(true)) AWT-элементы не будут перекрывать меню.

Сравнение с SWT

Примеры

«Hello World» с использованием Swing:

 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.SwingUtilities; 
 
 public final class HelloWorld implements Runnable {
 
     public static void main(String[] args) {

         // Swing имеет собственный управляющий поток (т.н. dispatching thread),
         // который работает параллельно с основным (стартовым, в котором выполняется main())
         // потоком. Это означает, что если основной поток закончит работу (метод main завершится),
         // поток, отвечающий за работу Swing-интерфейса, может продолжать свою работу. 
         // И даже если пользователь закрыл все окна, программа продолжит свою работу 
         // (до тех пор, пока жив данный поток). Начиная с Java 6, когда все компоненты уничтожены,
         // управляющим интерфейсом поток останавливается автоматически.
         // 
         // Запускаем весь код, работающий с интерфейсом, в управляющем потоке, даже инициализацию:
 
         SwingUtilities.invokeLater (new HelloWorld());
     } 
 
     public void run() {
 
         // Создаем окно с заголовком "Hello, World!"
 
         JFrame f = new JFrame ("Hello, World!");

         // Ранее практиковалось следующее: создавался listener и регистрировался
         // на экземпляре главного окна, который реагировал на windowClosing() 
         // принудительной остановкой виртуальной машины вызовом System.exit().
         // Теперь же есть более "правильный" способ задать реакцию на закрытие окна.
         // Данный способ уничтожает текущее окно, но не останавливает приложение. Тем
         // самым приложение будет работать, пока не будут закрыты все окна.
 
         f.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
 
         // однако можно задать и так:
         //            f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

         // Добавляем на панель окна нередактируемый компонент с текстом.
  
         //f.getContentPane().add (new JLabel("Hello, World!")); - старый стиль
         f.add(new JLabel("Hello World"));
  
         // pack() "упаковывает" окно до оптимального размера, рассчитанного на основании размеров 
         // всех расположенных в нём компонентов.
 
         f.pack();

         // Показать окно

         f.setVisible(true);
     }
 }

Смена вида интерфейса с помощью Look-And-Feel:

try { 
    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    SwingUtilities.updateComponentTreeUI(this); 
}
catch (Exception e){
    System.out.println("Ошибка при загрузке Metal-Look-And-Feel");
}

Использование системного Look-And-Feel:

// Необходимо помнить, что изменение L&F приложения должно быть выполнено до 
// инициализации каких-либо компонентов Swing, иначе они могут быть инициализированы
// Java L&F, независимо от того, какой L&F вы запрашивали.
public static void main(String[] args) {
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } 
    catch (Exception e) {
    // Exception handle
    }

См. также

Ссылки

Примечания

  1. How to Set the Look and Feel (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)

Литература

Эта страница в последний раз была отредактирована 4 октября 2021 в 04:56.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).