Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Java для чайников. arrow Java для чайников. Урок 37. JFrame.
20.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Java для чайников. Урок 37. JFrame. Печать E-mail
Автор megabax   
07.01.2020 г.
В этой статье я постараюсь максимально просто и понятно изложить основы программирования на языке Delphi

Java для чайников. Урок 37. JFrame.

На прошлом уроке мы познакомились с JFrame. Сегодня изучим его более подробно. Итак, берем пример прошлого урока и находим там строку

frame.setPreferredSize(new Dimension(200, 100));

Заменим ее на строку

frame.setPreferredSize(new Dimension(500, 500));

Теперь размер окна будет больше:

Java для чайников. Урок 37. JFrame.

Также туда можно добавлять не только текстовые метки, но и сякие кнопки и прочее, а также кое-что поинтереснее, например, графические фигуры. Сейчас мы эти займемся. Но только сначала немного теории. Дело в том, что мы не просто будем добавлять фигуры в окно, но и разместим их по разным слоям. Для использования слоев нам понадобятся специальные панели, например JRootPane или JLayeredPane. Мы вспольуземся JLayeredPane, она предлагает следующие слои:

  • Default. Этот слой используется для размещения всех обычных компонентов, которые добавляются в контейнер. В этом слое располагаются внутренние окна многодокументных приложений.

  • Palette. Предназначен для размещения окон с набором инструментов, которые обычно перекрывают остальные элементы интерфейса. Создавать такие окна позволяет панель JDesktopPane, которая размещает их в этом слое.

  • Modal. Планировался для размещения легковесных модальных диалоговых окон. Однако такие диалоговые окна пока не реализованы, так что этот слой в Swing в настоящее время не используется.

  • Popup. Наиболее часто используемый слой, служащий для размещения всплывающих меню и подсказок.

  • Drag. Самый верхний слой. Предназначен для операций перетаскивания (drag and drop), которые должны быть хорошо видны в интерфейсе программы.

Ну, а теперь пример:

import javax.swing.*;

import java.awt.*;

 

// класс рисования двух типов фигур с текстом

class Figure extends JComponent

{

    private static final long serialVersionUID = 1L;

    private Color color;

    private int type;

    private String text;

   

    // параметры: цвет и тип фигуры

    Figure(Color color, int type, String text) {

        this.color = color;

        this.type = type;

        this.text = text;

        setOpaque(false);

    }

   

    public void paintComponent(Graphics g) {

   

        // прорисовка фигуры

        g.setColor(color);

        switch (type) {

        case 0: g.fillOval(0, 0, 90, 90); break;

        case 1: g.fillRect(0, 0, 130, 80); break;

        }

        g.setColor(Color.yellow);

        g.drawString(text, 10, 35);

    }

}

 

public class LayeredPane extends JFrame

{

    private static final long serialVersionUID = 1L;

 

    public LayeredPane()

    {

        // создание окна

        super("Пример окна со слоями");

       

        // выход при закрытии окна

        setDefaultCloseOperation(EXIT_ON_CLOSE);

       

        // определение многослойной панели

        JLayeredPane lp = getLayeredPane();

       

        // создание трех фигур

        Figure figure1 = new Figure(Color.red , 0, "Фигура popup");

        Figure figure2 = new Figure(Color.blue, 0, "Фигура 1");

        Figure figure3 = new Figure(Color.cyan, 1, "Фигура 2");

       

        // определение местоположения фигур в окне

        figure1.setBounds(10, 40, 120, 120);

        figure2.setBounds(60, 120, 160, 180);

        figure3.setBounds(90, 55, 250, 180);

       

        // добавление фигур в различные слои

        lp.add(figure1, JLayeredPane.POPUP_LAYER  );

        lp.add(figure2, JLayeredPane.PALETTE_LAYER);

        lp.add(figure3, JLayeredPane.PALETTE_LAYER);

       

        // смена позиции одной из фигур

        lp.setPosition(figure3, 0);

       

        // определение размера и открытие окна

        setSize(280, 250);

        setVisible(true);

    }

   

    public static void main(String[] args)

    {

        JFrame.setDefaultLookAndFeelDecorated(true);

        new LayeredPane();

    }

}

Запустив программу, мы увидим вот такое окно:

Java для чайников. Урок 37. JFrame.

Теперь разберемся, как работает программа. Для отображения фигуры мы объявляем отдельный класс Figure, который является потомком класса JComponent:

// класс рисования двух типов фигур с текстом

class Figure extends JComponent

{

    private static final long serialVersionUID = 1L;

    private Color color;

    private int type;

    private String text;

   

    // параметры: цвет и тип фигуры

    Figure(Color color, int type, String text) {

        this.color = color;

        this.type = type;

        this.text = text;

        setOpaque(false);

    }

   

    public void paintComponent(Graphics g) {

   

        // прорисовка фигуры

        g.setColor(color);

        switch (type) {

        case 0: g.fillOval(0, 0, 90, 90); break;

        case 1: g.fillRect(0, 0, 130, 80); break;

        }

        g.setColor(Color.yellow);

        g.drawString(text, 10, 35);

    }

}

Главный класс окна, для удобства, мы создаем из JFrame, разместив в конструкторе те объекты (Figure), которые мы будем выводить на экран. Мы их сначала создаем:

        // создание трех фигур

        Figure figure1 = new Figure(Color.red , 0, "Фигура popup");

        Figure figure2 = new Figure(Color.blue, 0, "Фигура 1");

        Figure figure3 = new Figure(Color.cyan, 1, "Фигура 2");

       

        // определение местоположения фигур в окне

        figure1.setBounds(10, 40, 120, 120);

        figure2.setBounds(60, 120, 160, 180);

        figure3.setBounds(90, 55, 250, 180);

а потом добавляем в контейнер JLayeredPane:

        // добавление фигур в различные слои

        lp.add(figure1, JLayeredPane.POPUP_LAYER  );

        lp.add(figure2, JLayeredPane.PALETTE_LAYER);

        lp.add(figure3, JLayeredPane.PALETTE_LAYER);

который создали ранее:

        // определение многослойной панели

        JLayeredPane lp = getLayeredPane();

Обратите внимание вот на эту строку кода:

        // смена позиции одной из фигур

        lp.setPosition(figure3, 0);

Мы можем внести в нее изменения, сделав первым круг, а не прямоугольник:

        // смена позиции одной из фигур

        lp.setPosition(figure2, 0);

Тогда работа программы будет выглядеть вот так:

Java для чайников. Урок 37. JFrame.

 

(С) Шуравин Александр

 

 

Последнее обновление ( 07.01.2020 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги