Русские Блоги
Standard Widget Toolkit (SWT) — это «Standard Widget Toolkit». SWT предоставляет переносимый API для разработчиков Java. SWT тесно связан с локальной платформой GUI, лежащей в основе операционной системы. По сути, SWT использует язык Java для инкапсуляции и привязки локального графического интерфейса операционной системы.
В платформе Eclipse многие низкоуровневые задачи программирования пользовательского интерфейса обрабатываются на более высоком уровне, например, JFace viewer и action реализуют взаимодействие между приложениями и виджетами. SWT является основой для реализации интерфейса Eclipse.
Может выполнять и интеграцию платформы
SWT определяет универсальный, переносимый и кроссплатформенный API. SWT использует локальные компоненты на каждой платформе для реализации своего API. Это позволяет SWT поддерживать согласованную модель программирования на всех платформах и представлять графических пользователей базовой операционной системы. Интерфейс позволяет компонентам SWT быстро реагировать на любые изменения интерфейса.
1.2 Widgets
SWT содержит множество функций с расширенным состоянием. Чтобы реализовать полезные и надежные приложения, вам необходимо изучить и понять основные части SWT-виджетов, макетов и событий.
Структура приложения SWT
Если вы создаете пользовательский интерфейс через точку расширения рабочей среды Eclipse, рабочая среда Eclipse будет обрабатывать механизм запуска SWT. Если вы пишете SWT-программу вне рабочей среды Eclipse, вам необходимо больше понять структуру SWT-приложения.
Типичное автономное приложение SWT содержит следующую структуру:
- Создать представление сеанса SWTDisplay объекты
- Создать один или несколькоShell Объект , как главное окно приложения
- Создайте нужные виджеты в оболочке
- Инициализируйте размер детали и другие необходимые состояния, зарегистрируйте прослушиватели событий для детали
- Откройте окно оболочки
- Запускайте цикл планирования событий, пока программа не закроется, обычно пользователь закрывает главное окно оболочки.
- Уничтожить экранный объект
В следующем фрагменте кода показана конкретная структура программы SWT:
public static void main (String [] args) < Display display = new Display (); // Display Shell shell = new Shell (display); // Shell Label label = new Label (shell, SWT.CENTER); label.setText («Hello world»); label.setBounds (shell.getClientArea ()); // shell.open (); // while (!shell.isDisposed ()) < if (!display.readAndDispatch ()) display.sleep (); >display.dispose (); >
Display
Display Объект связывает SWT с базовым графическим интерфейсом платформы и в основном используется для управления циклом событий платформы и управления взаимодействием между потоком пользовательского интерфейса и другими потоками.
Для большинства программ SWT вы можете следовать приведенному выше шаблону: перед созданием любого окна вы должны создать экранный объект и уничтожить экранный объект при закрытии оболочки. Если это не многопоточное приложение, обычно не нужно слишком много думать о отображении.
Shell
Shell — это окно, управляемое диспетчером окон платформы операционной системы. Оболочка верхнего уровня создается как дочерний объект отображения. Пользователь может перемещать, изменять размер, максимизировать и минимизировать эти окна. Другие оболочки создаются как подоболочки других оболочек.Эти окна обычно используются в качестве диалоговых окон и других временных окон и существуют в контексте других окон.
Отношения отца и сына
Пока это не оболочка верхнего уровня, все части виджета должны иметь родителя. Оболочка верхнего уровня не имеет родителя, но связана с дисплеем. Вы можете получить доступ к дисплею через getDisplay (). Все остальные виджеты являются потомками оболочки верхнего уровня (прямой или косвенный).
Composite Виджеты — это виджеты, которые могут содержать дочерние элементы.
Окно приложения можно рассматривать как дерево wedgit или иерархию, а корень — это оболочка. В зависимости от сложности приложения оболочка может иметь только один дочерний элемент или иметь несколько составных элементов, содержащих дочерние элементы в иерархии.
Установить стиль (биты стиля)
Некоторые компоненты должны быть установлены с атрибутами во время создания и не могут быть изменены. Например, список может быть одним или несколькими, и может иметь или не иметь полосы прокрутки.
Как правило, эти атрибуты задаются в методе конструирования. Все методы конструирования компонентов виджета имеют параметр int, который задает стиль. Этот параметр int задает все требуемые стили в бите или отношении.
Константы стиля включены вSWT В категории, какSWT Открытый статический член существует.
Освободить ресурсы (удаление ресурсов)
Базовая платформа в рамках SWT требует четкого распределения и высвобождения системных ресурсов. Чтобы обеспечить согласованность с проектными идеями SWT, отражающими структуру приложения платформы в наборе компонентов, SWT требует, чтобы любые выделенные ресурсы операционной системы были явно освобождены. Метод Widget.dispose () используется для освобождения ресурсов, связанных с конкретными объектами инструментария.
Практическое правило заключается в том, что если вы создаете объект, вы должны уничтожить его. Вот некоторые конкретные правила:
- Если вы создаете объект изображения или компонент с использованием метода построения, вы должны явно уничтожить его после использования
- Когда Compsite уничтожается, Composte и все дочерние части рекурсивно уничтожаются, в этом случае вам не нужно уничтожать части. Однако любые ресурсы изображения, связанные с деталью, должны быть освобождены.
- Если это не графический объект или деталь, полученная с помощью метода конструирования, вам не нужно его уничтожать, поскольку вы не создали этот ресурс напрямую.
- Если вы передаете ссылку на объект детали или изображения другому объекту, вы должны быть осторожны, чтобы не уничтожить его при использовании ресурса.
- Если вы создаете графический объект и используете его в жизненном цикле компонента, вы должны уничтожить графический объект при уничтожении компонента. Вы можете зарегистрировать его для компонента слушатель dispose, уничтожить графический объект при срабатывании события dispose
Не все объекты, созданные с использованием классов в SWT, должны быть уничтожены. Для обычных объектов данных, таких какRectangle иPoint , они не используют ресурсы операционной системы, у них нет метода dispose (), им не нужно их освобождать.
Источник: russianblogs.com
Расширение файла SWT
Согласно нашим записям, существуют один тип(ы) файлов, связанных с расширением SWT, самый популярный из которых отформатирован в качестве Flash Generator Template. Самое распространенное связанное приложение — Adobe Flash Professional CC, выпущенное Adobe Systems Incorporated. Кроме того, один различные программы позволяют вам просматривать эти файлы. В большинстве случаев эти файлы относятся к Video Files.
Просматривать файлы SWT можно с помощью операционных систем Windows и Mac. Они обычно находятся на настольных компьютерах (и ряде мобильных устройств) и позволяют просматривать и иногда редактировать эти файлы. Рейтинг популярности расширения файла SWT составляет «Низкий», что означает, что эти файлы, как правило, не встречаются в большинстве файловых хранилищ пользователя.
Если у вас возникли проблемы с открытием файлов SWT, или если вы просто хотите узнать больше о связанных с ними программах и разработчиках см. полную информацию, представленную ниже.
Источник: www.solvusoft.com
Мои первые шаги в SWT: Простенький блокнот со вкладками
На Хабрахабре очень мало статей о SWT, поэтому я постараюсь исправить данное маленькое упущение.
- Какова мотивация использовать SWT в отличии от основного конкурента — Swing
- Основные трудности с которыми я столкнулся при разработке простенького блокнота на связке Java + SWT и Немного кода
- Каким образом упаковать и распространить свое приложение для нескольких платформ
Преамбула
Как известно, Java славится своей кросс-платформенностью (write-once — run anywhere), и к GUI приложениям это тоже относится. Хотя, пожалуй, Java и не самая распространненная платформа для написания GUI приложений. И на то есть ряд причин.
Пожалуй основная причина тому — убеждение, что код написанный под какую-то конкретную платформу будет работать быстрее, нежели код, который написан для чего-то абстрактного в вакууме. Что ж, на мой взгляд пожалуй это правда.
Некоторые со мной не согласятся и скажут, что это как раз стиль Java — написанное единожды должно исполняться и выглядеть одинаково на всех платформах. И Swing тому хорошее подтверждение. Конечно же Swing приложение можно кастомизировать с помощью различных тем(Look And Feel) но все равно оно будет чувствоваться и выглядеть не совсем так, как родное.
Хотя ребятам из JetBrains и удалось доказать (по крайней мере мне лично), что Swing приложения могут быть очень-даже дружелюбными, но факт остается фактом — оно начинает со временем тормозить не потому что написано плохо, а именно в силу того, что в качестве GUI фреймворка используется Swing, который с операционными системами дружит несколько хуже чем их нативные компоненты.
SWT как раз подошел с другой стороны к этой проблеме. По большому счету SWT — это тонкая прослойка между Java программистом и нативными API какой-то конкретной операционной ситемы, что несколько наршует идеологию Java. Но, как говорится, правила как раз и существуют для того, что бы их нарушать. Особенно, если это идет на благо. И это на мой взгляд является основной мотивацией, почему стоит обратить внимание на SWT.
Первые шаги
Думаю что бы читателю было понятнее, мне стоит рассказать, чего я хотел добиться от своего блокнота.
Задуммка была весьма проста:
Я хотел сделать подобие классического блокнота, того что мы наблюдаем под Windows. Только со вкладками.
Забегая вперед скажу, что я это не полностью реализовал свою идею — отстутствуют возможности посылать документ принтеру на печать, возможность менять шрифт, поиск по документу. Но, то что получилось, позволило почувствовать «вкус SWT», который окалазся довольно-таки приятным.
Ну что же. Пока что было только много слов, но никаких действий. Пора привести немножко кода.
Точка входа в приложение, это(Bootstrap.java):
final Display display = new Display(); final Shell shell = new Shell(display); final DocumentAndTabManager documentAndTabManager = new DocumentAndTabManager(shell); final TextEditor textEditor = new TextEditor(shell, documentAndTabManager); textEditor.init(); textEditor.run();
- Создали дисплей(Display), сказали что бы оболочка(Shell) использовала наш дисплей. (На мой взгляд SWT имеет достаточно стройную идеологию — приложению не следует иметь более чем один объект-дисплей.)
- Оболочка(Shell) — то, где будет проходить основное действие. Если провести аналогию со Swing — то можно сказать, что это в какой-то мере аналог JPanel.
- Сделали инъекцию из оболочки нашему мэнеджеру документов и редактору текста, что бы они не забывались, зачем они нужны и кто у них хозяин.
Проинициализировали оболочку (TextEditor.java):
shell.setLayout(new FillLayout()); //И поставили поставили меню оболочке(окошку): shell.setMenuBar(createAndSetUpMenu());
В кратце процесс создания меню:
//Говорим что у нас есть такое-то меню, чей родитель — оболочка: final Menu menu = new Menu(shell, SWT.BAR); // Создаем пункт в меню. final MenuItem helpItem = new MenuItem(menu, SWT.CASCADE); //Ставим текст: знак » говорит нам о том, что пункт меню будет доступен по комбинации клавиш Alt+H. helpItem.setText(«); //Далее делаем под-меню для нашего меню Item’a: final Menu helpMenu = new Menu(menu); helpItem.setMenu(helpMenu); final MenuItem about = new MenuItem(helpMenu, SWT.NONE); about.setText(«About»); about.addSelectionListener(new HelpMenuAboutSelectionListener(shell));//Вешаем слшуатель события на нажатие этого пункта меню.
И запускаем наше приложение:
shell.open();//Отображаем окно while (!shell.isDisposed()) < final Display display = shell.getDisplay(); if (!display.readAndDispatch()) < display.sleep(); >> shell.dispose();
Далее, во время выполнения нашего блокнота, сработает какой-то из слушателей (в ответ на какое-то наше действие), из которого мы сделаем то, что нам нужно, допустим запустим какое-то задание в синхронном или в асинхронном режиме:
shell.getDisplay().asyncExec(new ReloadJob(documentAndTabManager, currentTab));
Упаковка
Очередная порция псевдо-трудностей с которой я столкнулся:
Для каждой операционной системы и архитектуры нужно сделать свой билд. Для этого нужны jar’ы для каждой конкретной платформы. Я привык пользоваться Maven’ом, но для этих целей он не очень хорошо подходит, ибо свежих версий SWT я увы не нашел в Maven-репозиториях, да и пришлось скачивать мануально пакеты для каждой из платформ операционных систем/архитектур. Кроме того там где нужно много кастомизации Maven не особо подходит, зато на помощь приходит старый-добрый Ant. В качестве менеджера зависимостей я взял Ivy.
Кусок ant-скрипта(build.xml), отвечающий за упаковку под конкретную операционную систему/архитектуру:
/lib/swt» includes=»swt-$-$.jar»/>
Размер Jar’ов получился 2 — 2.5 МБ (в зависимости от ОС и архитектуры), что вообщем-то не так уж и много.
Вместо заключения
Пропустив через себя небольшой цикл разработки я могу заметить
Минусы SWT на мой взгляд:
* Мало документации/туториалов
* Гугл не так много знает о SWT, как о Swing
* Многие проблемы приходится решать дольше.
Плюсы SWT на мой взгляд:
* В общем и целом простой и понятный API
* Кросс-платформенное, нативно выглядящее приложение
* Из коробки быстрее работающее, чем такое же на Swing
Что я вынес для себя из этого маленького эксперимента?
SWT со всеми своими прелестями и недостатками произвел на меня приятное впечатление. Когда я в следующий раз решусь написать десктопное приложение — я без сомнения выберу связку Java + SWT.
P.S. Несколько скриншотов напоследок.
Нативная прокрутка для Ubuntu (Unity)
Нативное меню для Ubuntu (Unity)
И из-под Windows:
Под Mac OS к сожалению скриншотов нет за неимением Mac OS X.
Любезно предоставленный скриншот пользователем seneast:
Исходные коды доступны здесь: code.google.com/p/swt-text-editor/source/browse
Скачать мою вариацией блокнота для своей ОС можно здесь: code.google.com/p/swt-text-editor/downloads/list
Из-под Windows запускается двойным кликом, из-под Mac OS X java -XstartOnFirstThread -jar simple_edit*., Linux командой java -jar simple_edit*. Запускается под Java 1.6 и выше.
Короткие инструкции, как начать баловаться с кодом из-под IDE(на английском) code.google.com/p/swt-text-editor/wiki/SourceCodeImport
Буду рад любым комментариям, нареканиям и советам.
Источник: habr.com
Swt папка можно ли удалить
В нашей базе содержится 3 разных файлов с именем swt-win32-3738.dll . You can also check most distributed file variants with name swt-win32-3738.dll. Чаще всего эти файлы принадлежат продукту Standard Widget Toolkit. Наиболее частый разработчик — компания Eclipse Foundation. Самое частое описание этих файлов — SWT for Windows native library. Этот файл — динамически подключаемая библиотека.
Такая библиотека может загружаться и выполняться любым работающим процессом.
Автор Dbrf ytrhujyh задал вопрос в разделе Прочее компьютерное
Что за папка .swt Что это за папка и можно ли её удалять? и получил лучший ответ
Ответ от Firs Hago[гуру]
НЕТ
Standard Widget Toolkit, или SWT (произносится «свит») — библиотека с открытым исходным кодом для разработки графических интерфейсов пользователя на языке Java.
Разработана фондом Eclipse, лицензируется под Eclipse Public License, одной из лицензий открытого ПО.
SWT не является самостоятельной графической библиотекой, а представляет собой кросс-платформенную оболочку для графических библиотек конкретных платформ, например, под Linux SWT использует библиотеку Gtk+. SWT написана на стандартной Java и получает доступ к OS-специфичным библиотекам через Java Native Interface, который рассматривается в качестве сильного средства, несмотря на то, что это не является чистой Java.
SWT — альтернатива AWT и Swing (Sun Microsystems) для разработчиков, желающих получить привычный внешний вид программы в данной операционной системе. Использование SWT делает Java-приложение более эффективным, но снижает независимость от операционной системы и оборудования, требует ручного освобождения ресурсов и в некоторой степени нарушает Sun-концепцию платформы Java.
Что можно удалять с диска С, а что нельзя?
Свободное пространство диска С в процессе эксплуатации Windows постоянно сокращается. В независимости от действий пользователя — хочет он того или нет. Временные файлы, архивы, куки и кеш браузеров и прочие программные элементы, выполнив свою единоразовую миссию (обновление, установка, распаковка), оседают в папках раздела С. Плюс к этому — полезные мегабайты и гигабайты поглощают некоторые функциональные модули Windows.
Первое средство от такого «захламления» — комплексная очистка диска С. Выполнять её нужно регулярно и своевременно. В противном случае, раздел переполнится, и вы не сможете полноценно пользоваться ОС и, соответственно, ПК. Windows будет постоянно прерывать вашу работу предупреждающими сообщениями — «недостаточно памяти». Станет невозможен просмотр видео онлайн, так как браузер не сможет сохранять на компьютере закачиваемый с сервера контент. Могут произойти и другие неприятности.
Приступая к очистке диска С: что нужно знать и делать
Удаление с диска С всяких ненужных элементов — процедура весьма деликатная. Требует от пользователя повышенной осторожности, внимания. «Уборка» не должна навредить ОС.
Противопоказано удаление файлов в папках:
- Windows (сердце ОС — здесь хранятся все её составляющие);
- Boot (загрузочные файлы системы);
- ProgramData (целиком нельзя! могут не запускаться установленные приложения);
- ProgramFiles (проинсталлированное ПО);
- Users (пользовательские данные).
Некоторые папки, в которых необходимо «наводить чистоту», по умолчанию скрыты, то есть не отображаются в директориях. Чтобы добраться до них, выполните следующее:
1. Нажмите одновременно комбинацию клавиш — «Win + E».
2. В окне «Компьютер» нажмите клавишу «Alt».
3. Вверху окна появится горизонтальное меню. Наведите курсор на раздел «Сервис». В подменю кликните «Параметры папок… ».
4. В настройках параметров перейдите на вкладку «Вид».
5. Прокрутите до конца список опций в разделе «Дополнительные параметры:».
6. Уберите галочку напротив «Скрывать защищённые системные… ». Включите кликом мыши радиокнопку «Показывать скрытые файлы… ».
С чего начать уборку диска С?
Первым делом, необходимо освободить корзину:
- наведите курсор на её иконку;
- нажмите правую кнопку мышки;
- в меню выберите «Очистить корзину».
Большие, маленькие файлы, в независимости от того, в каком разделе хранятся (диск D, E или С), после удаления отправляются в C:RECYCLER, файл «Корзина». Вследствие чего, свободное место системного раздела уменьшается. Удаление большого видеофайла или образа (например, файла iso) при дефиците лишних гигабайт, может запросто привести к переполнению диска С.
Совет! Перед тем, как очистить корзину, просмотрите рабочий стол на предмет ненужных ярлыков. Их размеры не велики, но чем меньше будет бесполезных файлов, тем лучше.
Очистка диска штатной утилитой Windows
1. Кликните иконку «Пуск».
2. В правой колонке нажмите «Компьютер».
3. Кликните правой кнопкой по иконке диска С. В меню выберите «Свойства».
4. В панели свойств, на вкладке «Общие», нажмите кнопку «Очистка диска».
5. Подождите немного, пока система проверит директории на наличие ненужных файлов.
6. Далее, в разделе «Удалить следующие файлы», выберите какие элементы удалить, а какие — оставить (проставьте галочки).
7. Нажмите «Очистить системные файлы», а потом — «OK».
Примечание. Применением данной утилиты можно ограничиться, если в системе не наблюдается сильных «засорений». Когда требуется расчистить 2, 3, 5 и больше Гб, необходимо выполнить ещё несколько процедур, которые включают в себя не только удаление отдельных файлов, но и изменение настроек ОС.
Удаление ненужных файлов из системных папок
Довольно часто, пользователи, сами того не ведая, «складывают» контент и ПО в специальные папки ОС, предназначенные для хранения разнообразной информации: «Загрузки», «Изображения», «Мои видеозаписи» и т.д. Многие программы и браузеры по умолчанию (без изменения первоначальных настроек) отправляют данные именно в эти директории.
Откройте их поочерёдно и удалите всё ненужное. Файлы, представляющие для вас особую ценность, перенесите в логический раздел (например, диск D, E).
Совет! Действуйте смело. Здесь можно удалить любой элемент, и Windows от этого не пострадает.
Папка «Temp»
Одна из главных источников засорения ОС. В ней размещают свои элементы антивирусы, драйвера, приложения, игры. Происходит это во время обновлений и инсталляций. После завершения задач, отработанные файлы так и остаются в «Temp». Конечно же, их оттуда нужно периодически убирать.
1. На диске С зайдите в папку «Пользователи».
2. Кликните папку с именем своей учётной записи (имя пользователя).
3. Затем перейдите в «AppData».
4. В директории «Local», откройте папку «Temp».
5. Полностью очистите её (отправьте все файлы/папки в корзину).
Совет! Если вы пользуетесь файловым менеджером «Total Commander»: создайте новую вкладку (сочетание клавиш «Ctrl» + «стрелочка вверх») и перейдите в папку Temp. Таким образом, у вас будет всегда на виду её содержимое.
Отключение файла подкачки
Pagefile.sys — виртуальная память ОС. Когда заканчиваются ресурсы RAM (оперативной памяти), система сохраняет невместившиеся данные в этот файл. Если на вашем ПК объём RAM превышает 4,6 или 8 Гб, контейнер «Pagefile.sys» можно отключить. На диске он занимает примерно такой же объём, как и оперативная память. Например, если в конфигурации вашего ПК, RAM составляет 16 Гб, то Pagefile.sys будет примерно таким же.
Чтобы отключить файл подкачки:
1. Через «Пуск» (иконка «Win») откройте «Панель управления».
2. В разделе «Система и безопасность» выберите «Система».
3. В окне настроек кликните «Дополнительные параметры… ».
4. В панели «Свойства системы», на вкладке «Дополнительно», нажмите «Параметры».
5. В опции «Параметры быстродействия», на вкладке «Дополнительно», в разделе «Виртуальная память», активируйте «Изменить… ».
6. В окне «Виртуальная память»:
- выберите диск С;
- включите кликом радиокнопку «Без файла подкачки»;
- нажмите кнопку «Задать», а потом — «OK».
7. Перезагрузите ПК.
Отключения гибернации
Гибернация — разновидность спящего режима: когда пользователь в течение определённого промежутка времени бездействует, ОС сохраняет все настройки в специальный файл hiberfil.sys. Windows также, как и для Pagefile.sys, резервирует для него свободное пространство на С, равное объёму RAM.
Поэтому, если вы не пользуетесь режимом гибернации, его лучше отключить.
1. Нажмите «Win + R».
2. Введите «CMD», нажмите «ENTER».
3. В консоли командной строки введите — «powercfg -h off» (без кавычек), далее — «ENTER».
4. Перезапустите ОС.
Применение сторонних утилит
Уборку диска С можно запросто «поручить» специальной программе-уборщику, например, CCleaner. Она умеет автоматически очищать корзину, дампы памяти, буфер обмена, удалять временные файлы (куки и кеш) популярных браузеров, а также выполнять множество других операций по удалению системного «хлама».
Всегда контролируйте объём диска С. Не допускайте его переполнения. Выполняйте удаление ненужных файлов не только в целях освобождения дискового пространства, но и для профилактики.
Успехов! Пусть ваш ПК хранит только полезную информацию.
Источник: pro-smartfon.ru