Перейти к публикации
alex_xpert

Java. GUI. Пример.

Рекомендованные сообщения

alex_xpert

Добрый вечер. Сегодня я расскажу, как создать графический интерфейс вашего Java-приложения.

В состав JRE (она же JVM) входят библиотеки графического интерфейса AWT и Swing. AWT, кроме того, содержит много других полезных классов.  Конечно, существуют и другие, например SWT. Для создания приложений с насыщенным графическим интерфейсом пользователя существует платформа JavaFX.

Я покажу пример того, как использовать Swing для построения интерфейса программы, на простом и подробно прокомментированном примере:

 

import java.awt.Color;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;

/**
 * Демонстрация использования Swing
 * @author alex_xpert
 */
public class Nevex {
    private static JFrame jf; // Собственно, наш фрейм (форма)
    private static JDialog info; // Диалоговое окно информации о программе

    public static void main(String[] args) {
        try {
            /* Пусть наш GUI будет в стиле ОС */
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            
            /* Спионерим иконку для формы и диалогового окна =) */
            Image icon = Toolkit.getDefaultToolkit().getImage(new URL("https://nevex.pw/public/style_images/nevex/n2c.png"));
            
            jf = new JFrame("Nevex"); // Создаём нашу форму и устанавливаем её титл
            /*jf.setTitle("Nevex");*/ // Метод установки/смены титла 
            jf.setIconImage(icon); // Устанавливаем форме нашу спионеренную иконку
            /*jf.setSize(400, 400);*/ // Метод установки/смены размера формы
            jf.setBounds(Toolkit.getDefaultToolkit().getScreenSize().width/2-200, // Устанавливаем отступы слева и сверху
                        Toolkit.getDefaultToolkit().getScreenSize().height/2-200, 400, 400); // а также размер формы
            jf.getContentPane().setBackground(Color.white); // Устанавливаем бэкграунд
            
            info = new JDialog(jf.getOwner(), "О программе"); // Создаём диалоговое окно
            //info.setSize(220, 80);
            info.setBounds(Toolkit.getDefaultToolkit().getScreenSize().width/2-110, // Отступы
                        Toolkit.getDefaultToolkit().getScreenSize().height/2-40, 220, 80); // и размер
            info.getContentPane().setBackground(Color.white); // Бэкграунд
            info.setIconImage(jf.getIconImage()); // Иконку
            
            /* Создаём нередактируемый участок текста и выравнииваем его по центру диалогового окна.
             Текст тоже центрируем. Да, JLabel "знает" HTML.  */
            JLabel text = new JLabel("<html><center>Демонстрация использования Swing.<br> Специально для проекта Nevex.</center></html>");
            text.setHorizontalAlignment(0);
            
            info.add(text); // Добавляем компонент в диалоговое окно
            
            JMenuBar menubar = new JMenuBar(); // Создаём строку меню
            
            JMenu menu = new JMenu("Справка"); // Создаём меню
            
            JMenuItem about = new JMenuItem("О программе"); // Создаём пункт меню
            
            /* Устанавливаем обработчик выбора пункта меню */
            about.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    info.setVisible(true); // Показываем диалоговое окно
                }
            });
            
            menu.add(about); // Добавляем в меню пункт
            menubar.add(menu); // Добавляем меню в строку меню
            jf.setJMenuBar(menubar); // Устанавливаем форме строку меню
            
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Приказываем завершать работу программы при закрытии формы
            
            jf.setVisible(true); // Показываем форму
        } catch (Exception ex) {
            /* Если произошла ошибка, то выводим её на консоль... */
            System.out.println("Ошибка: " + ex.getMessage());
        }
    }
}

 

В итоге получаем вот что:

 

nvx1375564247__nevex.jpg

 

Кстати, в NetBeans встроен удобный GUI билдер.

 

Если Вас интересуют какие-то конкретные возможности - спрашивайте, расскажу и покажу.



P.S.: Остальные компоненты в Swing также именуются с приставкой J (JButton, JCheckBox, JTextField, JComboBox, JTextField и т.д.).

Изменено пользователем Xpert™

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TheAndrey

 

Image icon = Toolkit.getDefaultToolkit().getImage(new URL("https://nevex.pw/public/style_images/nevex/n2c.png"));

Зачем тащить из интернета? В дефолтный (или любой другой) пакет надо запихнуть и оттуда уже брать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alex_xpert

 

Зачем тащить из интернета? В дефолтный (или любой другой) пакет надо запихнуть и оттуда уже брать.

Это я сделал для того, чтобы пример был максимально прозрачным.

Иконку можно положить рядом с исполняемым файлом программы и получить так:

 

Image icon = Toolkit.getDefaultToolkit().getImage("n2c.png");

 

Ещё более правильный вариант - положить иконку в пакет, рядом с классом. У меня пакет, в котором находится класс Nevex, называется nevex. В таком случае, я делаю так:

 

Image icon = Toolkit.getDefaultToolkit().getImage(Class.forName("nevex.Nevex").getResource("/nevex/n2c.png"));

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...