February
Standard Widget Toolkit (SWT Eclipse GUI)
Posted in: Java GUI, Swing, AWT, SWT, Java technologies, J2SE |
Познакомился еще с одной Java-библиотекой для создания GUI. Это Standard Widget Toolkit (SWT). Приложения SWT разрабатываются с использованием Eclipse workbench.
SWT приложения используют ОС-зависимый код (native), поэтому они быстрее Java GUI написанных на AWT и тем более на Swing.
Для написания и запуска самого простого SWT приложения на платформе Windows вам понадобится:
- JRE (я использовал 1.4.2);
- Eclipse SDK (3.1.0);
- SWT plug-in (org.eclipse.swt.win32.win32.x86_3.1.0.jar).
Plug-in можно найти в директории Eclipse/plugins. Этот jar содержит dll, которая должна находится в path (можно добавить путь к dll в Path System Variable или же просто переписать ее в папку WINDOWS/system32/). Сам же jar-файл должен находиться в classpath для данного приложения.
Привожу простейший пример Java GUI на SWT:
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
public class SWTHello {
Display display = new Display();
Shell shell = new Shell(display);
Label label = null;
Button button = null;
public SWTHello() {
shell.setLayout(new RowLayout(SWT.VERTICAL));
label = new Label(shell, SWT.NONE);
label.setText(“Say Hello.”);
button = new Button(shell, SWT.NONE);
button.setText(“Say”);
button.addSelectionListener(new SimpleListener());
shell.pack();
label.pack();
button.pack();
}
class SimpleListener implements SelectionListener {
public void widgetSelected(SelectionEvent e) {
MessageBox message = new MessageBox(shell,
SWT.ICON_WARNING | SWT.OK);
message.setText(“Message Box”);
message.setMessage(“Hello!”);
message.open();
}
public void widgetDefaultSelected(SelectionEvent e) {}
}
public void start() {
shell.open();
while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep();
display.dispose();
label.dispose();
}
public static void main(String[] args) {
SWTHello simpleGUI = new SWTHello();
simpleGUI.start();
}
}
Display - это объект, который сам по себе не виден, но нужен для того, чтобы отображать виджеты расположенные на нем.
Shell - это окно в пределах текущего приложения. Может быть создано несколько экземпляров Shell и они могут быть вложенными. Для отображения приложения необходимо открыть Shell и создать цикл (см. метод start) отслеживающий уничтожение окна.
Думаю, объекты Label и Button вам знакомы.
Listener реализуется практически так же, как и в Swing.
Для создания MessageBox используется одноименный класс. Метод open возвращает численное значение нажатой пользователем кнопки (org.eclipse.swt.SWT содержит все необходимые константы).
SWT порадовал меня удобным Layout для отображения виджетов - FormLayout. С помощью него можно указать расположение объектов в процентном соотношении относительно главного окна (прямо как div в HTML). Такого LayoutManager’a очень не хватает в Swing (в Swing есть GridBagLayout, но он достаточно сложный в использовании).
Ну вот наверное и все. Если у вас есть какие-то вопросы, буду рад дать на них ответ.
5 Comments »
RSS feed for comments on this post. TrackBack URI
А в SWT plugin входит визуальный дизайнер? И вообще существует такой?
Можете посмотреть информацию об Eclipse Visual Editor (www.ibm.com/developerworks/library/os-ecvisual/).
Он поддерживает AWT/Swing/SWT.
Можно где-нибудь найти полное описание классов SWT на русском или английском?
Спасибо
Кое что про SWT и Eclipse на русском есть на моем сайте по адресу
(http://www.berdaflex.com/ru/eclipse/eclipse.html)
—————
Сергей Бердачук