Как стать автором
Обновить

Выбор библиотеки для создания графического интерфейса Java

У любого разработчика начинается такое время, когда создавать консольные приложения уже не весело, а изучить что-то новое очень хочется.
Тогда в Java есть несколько путей, для нескольких ОС. В зависимости от тех ОС которые вы используете или окружений которые в них установлены.

Небольшое предисловие:
Сам я являюсь пока еще начинающий программистом ( могу писать софт средней сложности, но использую обычно скудный набор функций)
Статья рассчитана так же на новичков. Сам я работаю под Debian с Гномом, так что будут библиотеки мультиплатформенные)


Для начала стоило бы уделить внимание библиотеке GTK+

Она доступна не только для Явы, но и многих других языков: C++,C и т.д.

Написание Desktop'ных приложений с помощью GTK следует использовать если приложение рассчитано для работы под средой GNOME.

Сама GTK+ считается одной из самых легких для освоения библиотек под Jav'у.

Основа работы с библиотекой:

Для начала нужно подключить саму библиотеку со всеми ее вытекающими:

import org.gnome.gdk.Event;
import org.gnome.gtk.Gtk;
import org.gnome.gtk.Widget;
import org.gnome.gtk.Window;
import org.gnome.gtk.WindowPosition;


Если вышла ошибка, то скорее всего у вас просто не установлена библиотека.

Если юзаете систему типа Debian или Ubuntu, то вам поможет простая команда из терминала:
apt-get install libjava-gnome-java

После этого проблем быть не должно.

public class DesktopExample extends Window  {
 
    public DesktopExample() {
 
        setTitle("Пример окна на GTK и Гноме"); // Название приложения
 
        connect(new Window.DeleteEvent() {
            public boolean onDeleteEvent(Widget source, Event event) {
                Gtk.mainQuit();
                return false;
            }
        });
 
        setDefaultSize(250150); // Размер
        setPosition(WindowPosition.CENTER); //Позиция при запуске, в данном случае центр
        show();
    }
 
    public static void main(String[] args) {
        Gtk.init(args);
        new DesktopExample();
        Gtk.main();
    }
}


В конечном итоге получаем пустое окошко.

Далее можно ставить AWT или SWT, по сути это одно и тоже, только в разных обличиях.

AWT — считается оригинальной системой для разработки графических интерфейсов, ее ругают из-за того, что она
не всегда стабильно работает на разных платформах, но сейчас таких проблем вроде не наблюдается и работать с ней удобно.
Имхо, это мой выбор.
SWT — это детище от IBM, долизанная и перелизанная система, обычно отличается стабильностью при работе и легкой в освоении.
Но SWT тяжеловеснее AWT, обладает большим функционалом, в следствии чего сложней AWT.
Но ее я бы не стал использовать часто, хотя она довольно популярна и держит свои позиции.

Вот пример окна на AWT:

// Подключаем всякие фичи, хотя swing тут лишний, это я в своем приложении прикручивал
// Это просто обрезок кода
import java.awt.EventQueue;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
import javax.swing.JFrame;
 
 
public class Main {
 
private JFrame frame;
 
/**
 * Запуск приложения, что-то типо первоначальной настройки, создание окна и типа того.
 */

public static void main(String[] args) {
 
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main window = new Main();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
 
}
});
}
 
/**
 * Вызываем саму инициализацю 
 */

public Main() {
 
initialize();
}
 
/**
 * Инициализация окна
 */

private void initialize() {
frame = new JFrame("Чистое окно сгенерированное через Eclipse"); // Делаем новое окно с названием
frame.setBounds(100100450300);
frame.setSize(800800); // Размеры
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
 
 
}
 
}
 


А вот нам пример окна на SWT:

//Подключаем всякие фичи для веселой жизни
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
 
public class ExampleApp {
 
public static void main (String [] args) {
Display display = new Display ();
Shell shell = new Shell(display);
 
 
 
shell.pack(); //Подготовка ( первичная)
shell.open (); //Подготавливаем
while (!shell.isDisposed ()) { //Запускаем
if (!display.readAndDispatch ()) display.sleep (); //Спим до поры, до времени
}
display.dispose ();
}
}


Далее в очереди идет такая штука Swing.

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

Вот пример окна со swing'ом:

import javax.swing.JFrame;
import javax.swing.SwingUtilities;
 
public class Example extends JFrame {
 
    public Example() {
       setTitle("Пример приложения со Свингой");
       setSize(300200);
       setLocationRelativeTo(null);
       setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Example ex = new Example();
                ex.setVisible(true);
            }
        });
    }
}


Это был основной список графических сред на Java. Почти все представленные здесь «штуки» мультиплатформенны
и работают на любом компьютере — Win, Linux, Mac.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.