Search
Write a publication
Pull to refresh

Выбор библиотеки для создания графического интерфейса 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.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.