Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники 2020-2021 / Билеты.docx
Скачиваний:
71
Добавлен:
15.06.2021
Размер:
1.2 Mб
Скачать

Gui Swing. Рисование двумерной графики

Для рисования двумерных форм применяется класс Graphics2D

Для рисования предопределенных форм применяется класс Graphics

Поэтому перед рисованием требуется приведение типов:

Graphics2D g2 = (Graphics2D) g;

После чего можно создать объект двумерной формы и «нарисовать» его

Line2D line = new Line2D.Double(x0, y0, x1, y1);

g2.draw(line);

В Java есть ряд предопределенных форм:

Rectangle2D, Ellipse2D, Line2D, Poligon2D

Класс-компонент DrawGraf для рисования красного квадрата размером 10х10 пикселей

class DrawGraf extends JComponent

{

private static final Double W = 200;

private static final Double H = 100;

public void paintComponent(Graphics g) {

//Создаем объект g2 для двумерного рисования из объекта g

Graphics2D g2 = (Graphics2D) g;

//Устанавливаем цвет, который будет применяться

//для всего содержимого компонента: линий, текстов, заливки фигур

g2.setColor(Color.RED); //Рисуем квадрат по центру компонента. Цвет линии - красный

Rectangle2D rec = new Rectangle2D.Double(W/2-5, H/2-5, 10, 10);

g2.draw(rec); //Меняем цвет на синий g2.setColor(Color.BLUE); //Закрашиваем квадрат синим цветом

g2.fill(rec);

}

public Dimension getPreferredSize() {

return new Dimension(W, H);

}

}

Билет 19.

Обобщенные методы.

Методы также могут иметь обобщенную форму. Обобщенные методы могут быть определены как в обобщенных, так и в обычных классах.

Объявление обобщенного метода имеет следующий порядок:

1. Сначала (после модификаторов) приводится описание обобщенного типа

2. Затем тип возвращаемый методом

3. Затем имя метода

4. Затем аргументы обобщенные и обычные

public class noGeneric {

//Метод возвращает сумму массива

static <T extends Number> Double massSumm(T[] mass) {

Double summ = 0D;

for(T temp: mass) {

summ += temp.doubleValue();

}

return summ;

}

}

РВ в Java. Альтернативы. Применение.

Билет 20.

Обобщенные интерфейсы.

Интерфейсы также могут иметь обобщенную форму. Объявление обобщенного интерфейса аналогично объявлению обобщенного класса. Классы реализующие обобщенный интерфейс должны быть также обобщенными.

public interface Containment<T> {

boolean contains(T value);

}

...

public class noGeneric<T> implements main.Containment<T> {

T[] arrValue;

noGeneric(T[] value) {

arrValue = value;

}

//Если в массиве arrValue содержится эквивалент value

//возвращаем true

public boolean contains(T value) {

for(T temp: arrValue) {

if(temp.equals(value)) return true;

}

return false;

}

}

Результаты работы проверки наличия элемента в массиве с помощью

обобщенного класса, расширяющего обобщенный интерфейс.

public static void main(String args[]) {

Integer t[] = { 301, 467, 25 };

Float f[] = { 300F, 467F, 25F };

Float check = 467F;

noGeneric gn1 = new noGeneric(t);

System.out.println(gn1.contains(check));

//Вернет false

noGeneric gn2 = new noGeneric(f);

System.out.println(gn2.contains(check));

//Вернет true

}

Gui Swing. Компоненты jFrame и Jpanel. Свойства, методы. Привязка и обработка событий.

Создавая фрейм мы должны определить для него 3 параметра:

1. Действие при нажатии на кнопке закрытия фрейма Т.к. по закрытию фрейма программа не прекращает работу

2. Размеры фрейма

Т.к. по умолчанию они 0х0

3. Видимость фрейма

Т.к. по умолчанию фрейм не виден

import java.awt.*;

import javax.swing.*;

public class SimpleFrameTest {

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

SimpleFrame frame = new SimpleFrame();

frame.setTitle("DrawTest"); //Определяем заголовок фрейма

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Определяем, что программа завершит работу при закрытии фрейма

frame.setVisible(true);

//Делаем фрейм видимым

}

});

}

}

Панель JPanel — это элемент управления, представляющий собой прямоугольное пространство, на котором можно размещать другие элементы. Элементы добавляются и удаляются методами, унаследованными от класса Container.

Билет 21.

Графический интерфейс (GUI) на основе Swing. Основные понятия: сцена, панель, компонент.

GUI — Graphics User Interface.

Графический пользовательский интерфейс (ГПИ).

1. Создать фрейм.

2. Создать компонент (графический элемент управления)

3. Разместить компонент в панели контента фрейма

Фрейм это то, что обычно называют «окном». Изолированная область, которую можно перемещать по экрану и имеющую кнопки свертывания, развертывания и закрытия.

Панель – способ организации пространства внутри фрейма

компонент – элемент управления. Элементарность означает неделимость по отношению к вышележащему уровню панелей.

РВ в Java. Метасимволы. Применение.

Определенные метасимволы

  • .

  • [ ]

  • [^ ]

  • ^ (действует только в начале выражения)

  • $ (действует только в конце выражения)

  • *

  • { } — первоначальный вариант для { }

  • ( ) — первоначальный вариант для ( )

  • \n, где n — номер от 1 до 9

Билет 22.

Система ввода-вывода Java. Классы работы с вводом и выводом. Входные и выходные потоки. Байтовые и символьные потоки.

В Java операции ввода-вывода реализованы на основе потоков.

Поток — это абстрактная сущность (т. е. сущность, которая допускает переопределение в конкретном контексте), представляющая устройство ввода-вывода, которая выдает и получает информацию из программы.

Абстрактность понятия потока позволяет определить единообразие классов и методов, используемых для работы с различными по физической сущности устройствами ввода-вывода: клавиатура, монитор, файл. Для реализации потоков используются классы пакета java.io.

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

Выделение памяти для буфера преследует цель сокращения количества операций чтения и записи.

Виды потоков ввода-вывода в Java

  1. Байтовые потоки (Исторически появились первыми): InputStream и OutputStream

  2. Символьные потоки (Появились в JDK 1.4, 2002 г.): Reader и Writer

Классы для работы с байтовыми потоками

Для работы с вводом и выводом данных в Java используют предопределенные статические переменные in, out, err класса System из автовключаемого в каждую программу пакета java.lang. Эти переменные являются ссылками на потоки.

Некоторые методы классов, наследников InputStream и OutputStream

Соседние файлы в папке Заочники 2020-2021