Статьи

Учебник по графике

Как все мы знаем, что мы можем создавать игры с помощью библиотек Java, которые предоставляют нам графику, необходимую для их создания. Поэтому сегодня я начну новый раздел о Java-графике. Ранее я делал сообщения о том, как сделать калькулятор подоходного налога .

Для начала вот некоторые предварительные условия:

-У вас должно быть честное представление о синтаксисе Java, потому что я не собираюсь этому учить.
-Вы должны загрузить Eclipse (любой будет делать, например, Индиго, Галилео, Ганимед и т. Д.)
— Вы должны скачать файл acm.jar и включить его в свой проект в качестве внешнего файла JAR .

ПРИМЕЧАНИЕ . Если вы можете либо загрузить Eclipse, либо выполнить из командной строки . Если вы выполняете из командной строки , не забудьте ввести путь acm.jar к переменной среды -> CLASSPATH , иначе он выдаст ошибку.

AWT (Abstract Window Toolkit) предоставляет компоненты GUI, которые можно использовать в Java-апплетах, но здесь мы также будем использовать библиотеку acm.jar .

Пакет java.awt и acm. * / Acm.program. * пакет содержит компоненты GUI.

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

Холст:

Canvas (в java.awt) / GCanvas (acm. *) — это класс, который предоставляет холст на фоне для добавления объекта поверх него. Это создается автоматически программой Graphics.

Некоторые из методов GCanvas:

add (object): добавляет объект на холст.

add (object, x, y) : добавляет объект в указанной позиции (x, y).

add (object, position) : добавляет объект в указанной позиции (SOUTH, NORTH, EAST, WEST).

удалить (объект) : удаляет этот конкретный объект

removeAll () : удаляет все объекты с холста.

setBackground (color) : устанавливает фон холста.

Чтобы узнать больше о методах GCanvas, нажмите здесь .

Чтобы узнать о методах Canvas, нажмите здесь .

Контейнеры:

Вы добавляете компоненты GUI в контейнер, используя метод add.

Существует два типа контейнеров Window и Panel .

Окно :

Окно — это контейнер, который не зависит от других контейнеров. Есть два типа окон: Рамка и Диалог . Фрейм — это окно с заголовком и углами, размер которых можно изменить, тогда как диалог — это простое окно. Мы можем переместить диалог, но не можем изменить его размер.

Панель :

Панель должна находиться внутри другого контейнера или окна веб-браузера. Вы должны поместить панель в окно для отображения.

Компоненты позиционирования и размеров :

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

В классе Layout Manager определены разные методы для изменения местоположения и изменения размера.

Рамки:

Фрейм является подклассом Window . Frame наследует свои свойства от класса Container, поэтому вы можете добавлять компоненты в Frame с помощью метода add .

Макет по умолчанию для FrameBorderLayout , хотя это можно изменить с помощью метода setLayout .

Конструктор Frame (String) создает новый невидимый объект Frame с заголовком, указанным в String.

Пример :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
//Program using the acm library
import javax.swing.*;
import java.awt.*;
import acm.program.*;
 
public class FrameExample extends GraphicsProgram{
    private JFrame f;
    public FrameExample(){
        f = new JFrame("Code 2 Learn");
    }
    public void launchMyFrame(){
        f.setSize(300,300);
        f.setBackground(Color.blue);
        f.setVisible(true);
    }
    public void init(){
        FrameExample fe=new FrameExample();
        fe.launchMyFrame();
    }
}
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
//Program using the w/o acm library
import java.awt.*;
 
public class FrameExample{
    private Frame f;
     
    public FrameExample(){
        f = new Frame("Code 2 Learn");
    }
     
    public void launchMyFrame(){
        f.setSize(300,300);
        f.setBackground(Color.blue);
        f.setVisible(true);
    }
    public static void main(String args[]){
        FrameExample fe=new FrameExample();
        fe.launchMyFrame();
    }
}

Панели:

Панель , как и Frame , предоставляет пространство для подключения компонента GUI. Каждая панель может иметь свой собственный менеджер раскладки.

После создания панели мы должны добавить ее в окно или рамку . Это может быть достигнуто с помощью метода add () .

Пример :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Program using the acm library
import javax.swing.*;
import java.awt.Color;
import acm.program.*;
 
public class FrameExample extends GraphicsProgram{
     
    private JFrame f;
    private JPanel p;
     
    public FrameExample(){
        f = new JFrame("Code 2 Learn");
        p=new JPanel();
    }
     
    public void launchMyFrame(){
        f.setSize(300,300);
        f.setLayout(null); //Override the default layout manager
         
        p.setSize(300, 50);
        p.setBackground(Color.BLACK);
        f.add(p);
        f.setVisible(true);
    }
     
    public static void main(String args[]){
        FrameExample fe=new FrameExample();
        fe.launchMyFrame();
    }
}
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/Program using the w/o acm library
import javax.swing.*;
import java.awt.*;
 
public class FrameNPanel{
     
    private Frame f;
    private Panel p;
     
    public FrameNPanel(){
        f = new Frame("Code 2 Learn");
        p=new Panel();
    }
     
    public void launchMyFrame(){
        f.setSize(300,300);
        f.setLayout(null); //Override the default layout manager
         
        p.setSize(300, 50);
        p.setBackground(Color.BLACK);
        f.add(p);
        f.setVisible(true);
    }
     
    public static void main(String args[]){
        FrameNPanel fe=new FrameNPanel();
        fe.launchMyFrame();
    }
}

Я объяснил о панелях, рамах и окнах, в которые мы можем поместить наши предметы. Но мы не установили макет окна, панели или фрейма в нашем последнем уроке, мы использовали макет по умолчанию.
Теперь мы будем разбираться в различных типах макетов, доступных для использования и управления нашим графическим интерфейсом.

Макет контейнера:

Компоновка каждого компонента в контейнере регулируется менеджером макетов. С каждым контейнером (таким как Panel или Frames ) связан менеджер макета по умолчанию, который мы можем изменить.

Менеджер по раскладке:

Следующие менеджеры макета включены с языком программирования Java:

  • FlowLayout — FlowLayout является менеджером по умолчанию для Panel и Апплета . Компоненты, помещенные в контейнер с менеджером макета как FlowLayout, будут размещены рядом друг с другом, создавая поток (например, студенты по прямой линии)
  • BorderLayoutBorderLayout является менеджером по умолчанию для Window, Dialog и Frame. BorderLayout при применении заставит компоненты появляться на границах, т.е. ЗАПАД, ЮГ, СЕВЕР, ЦЕНТР ИЛИ ВОСТОК, в зависимости от того, какой выбор дан.
  • GridLayout — этот менеджер компоновки обеспечивает гибкость размещения компонентов в контейнере.
  • CardLayout — это то, что использует два или более компонентов, которые имеют один и тот же дисплей (как вы можете видеть ниже).
  • GridBagLayoutGridBagLayout — самый гибкий и самый сложный менеджер компоновки в среде Java. Он размещает компоненты, строки и столбцы и, таким образом, позволяет нам выполнять диапазон строк или столбцов для размещения поверх компонентов.

НОТА :

По умолчанию все классы Window используют менеджер BorderLayout, а классы Panel — диспетчер FlowLayout. Функция setLayout () используется для изменения макета контейнера (как показано ниже в примере).

Простой пример FlowLayout :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.awt.*;
 
public class GUI2 {
 
    private Frame f;
    private Button but1;
    private Button but2;
     
    public GUI2(){
        f = new Frame("CODE 2 LEARN");
        but1 = new Button("Like Code 2 Learn");
        but2 = new Button("Don't Like Code 2 Learn");
    }
     
    public void generateGUI(){
        f.setLayout(new FlowLayout());
        f.add(but1);
        f.add(but2);
        f.pack();
        f.setVisible(true);
    }
     
    public static void main(String[] args) {
        GUI2 launchgui= new GUI2();
        launchgui.generateGUI();
    }
}

Ссылка: Учебное пособие по Java-графике — 1 и Учебное пособие по Java-II от нашего партнера по JCG Фархана Хваджа в блоге Code 2 Learn .