Слайд 1Основы программирования (Java)
ФИСТ 1 курс
Власенко
Олег
Федосович
Лекция 2
Знакомство с ООП,
GUI и графикой в Java
Слайд 16UML – диаграмма классов
UML = Unified Modeling Language
Слайд 17источник вдохновения
http://www.slideshare.net/smirik/ruby-11754239
Слайд 18Задача 1
Создать оконное приложение 1. Две кнопки. Поле для ввода
текста. Кнопка «=0» текст сбрасывает.
Кнопка «+1» добавляет к тексту «+1».
Где
читать?
Файл «Разработка GUI v 5.0.docx»
стр. 1-67
Слайд 19Задача 1: Неполный код
public class Win1 {
private JTextField textField;
private void
initialize() {
JButton btnNewButton = new JButton("=0");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent
arg0) {
textField.setText("=0");
}
});
btnNewButton.setBounds(24, 35, 107, 23);
frmTitle.getContentPane().add(btnNewButton);
JButton btnNewButton_1 = new JButton("+1");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = textField.getText();
textField.setText(s + "+1");
}
});
btnNewButton_1.setBounds(221, 35, 107, 23);
frmTitle.getContentPane().add(btnNewButton_1);
textField = new JTextField();
textField.setBounds(24, 84, 304, 50);
frmTitle.getContentPane().add(textField);
textField.setColumns(10);
}
}
Слайд 20Задача 2
Создать оконное приложение 2. Поле для ввода числа number.
Кнопка по нажатию на которую число number разлагается на простые
множители и выводит в поле для вывода множителей.
Слайд 21Задача 2: Неполный код (1)
public class Win2 {
private JTextField textFieldNumber;
private
JTextField textFieldDivs;
private JLabel lblNewLabel;
private void initialize() {
JButton btnNewButton = new
JButton("\u0414\u0415\u041B\u0410\u0419!");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String s = textFieldNumber.getText();
int number = Integer.parseInt(s);
textFieldDivs.setText(printDivs(number));
} catch (Exception ex) {
textFieldDivs.setText("ERROR");
}
}
});
btnNewButton.setBounds(94, 82, 200, 63);
frame.getContentPane().add(btnNewButton);
}
Слайд 22Задача 2: Неполный код (2)
private static String printDivs(int number) {
int
div = 2;
String s = "" + number + "
= 1";
while (div <= number) {
if (number % div == 0) {
number /= div;
s = s + " * " + div;
} else {
div++;
}
}
return s;
}
}
Слайд 25Создаем собственную панель
package lect2;
import java.awt.Graphics;
import javax.swing.JPanel;
public class MyPanel1 extends JPanel
{
public void paint(Graphics g) {
super.paint(g);
g.drawRect(10, 20, 30, 40);
g.drawOval(10, 50, 100,
50);
}
}
Слайд 26Прикручиваем собственную панель
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100,
571, 467);
frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);
panel.setBorder(new
BevelBorder(BevelBorder.RAISED,
null, null, null,
null));
panel.setBounds(10, 11, 535, 405);
frame.getContentPane().add(panel);
}
Слайд 27Прикручиваем собственную панель
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100,
571, 467);
frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new MyPanel1();
panel.setBackground(Color.WHITE);
panel.setBorder(new
BevelBorder(BevelBorder.RAISED,
null, null, null,
null));
panel.setBounds(10, 11, 535, 405);
frame.getContentPane().add(panel);
}
Слайд 28Прикручиваем собственную панель
Результат:
Слайд 29Как рисовать?
Декартова система координат
Слайд 30Как рисовать?
Экранная система координат
Слайд 31Как рисовать?
// В метод paint() передается объект g, реализующий возможности
//
класса Graphics.
// Чтобы создать свое изображение, мы используем разные методы
// объекта g.
public void paint(Graphics g) {
// пурпурный цвет делается текущим – все ниже будет
// рисоваться пурпурным цветом
g.setColor(Color.magenta);
// рисуем корпус домика
g.drawRect(150, 350, 250, 175);
// левая линия крыши
g.drawLine(150,350,275,250);
// правая линия крыши
g.drawLine(275,250,400,350);
}
Слайд 32Как установить цвет?
Graphics.setColor(Color color)
// Текущий цвет синий – все ниже
рисуется синим
g.setColor(Color.blue);
// линия рисуется синим цветом
g.drawLine(10, 50, 100, 50);
// Текущий
цвет желтый – все ниже рисуется желтым
g.setColor(new Color(255, 255, 0));
// линия рисуется желтым цветом
g.drawLine(10, 55, 100, 55);
// линия рисуется желтым цветом
g.drawLine(10, 60, 100, 60);
// линия рисуется желтым цветом
g.drawLine(10, 65, 100, 65);
Слайд 33Как установить цвет?
популярные цвета
Слайд 34Графические примитивы
Graphics.drawLine(int x1, int y1, int x2, int y2)
g.setColor(Color.blue);
g.drawLine(10, 50,
100, 50);
g.setColor(new Color(255, 255, 0));
g.drawLine(10, 55, 100, 55);
g.drawLine(10, 60, 100,
60);
g.drawLine(10, 65, 100, 65);
Слайд 35Графические примитивы
Graphics.drawRect(int x, int y, int width, int height)
g.setColor(Color.RED);
g.drawRect(10, 50,
100, 50);
Слайд 36Графические примитивы
Graphics.fillRect(int x,int y, int width, int height)
g.setColor(Color.RED);
g.fillRect(10, 50, 100,
50);
Слайд 37Графические примитивы
Graphics.drawRoundRect(int x, int y, int width, int height, int
rx, int ry)
g.drawRoundRect(10, 50, 100, 50, 10, 30);
Слайд 38Графические примитивы
Graphics.drawOval(int x, int y, int width, int height)
g.drawOval(10, 50,
100, 50);
Слайд 39Графические примитивы
Graphics.drawArc(int x, int y, int width, int height, int
alpha, int beta)
g.drawArc(10, 50, 100, 50, 180, 180);
Слайд 40Графические примитивы
Graphics.drawString(String string, int x, int y)
g.setFont(new Font("Courier", Font.BOLD +
Font.ITALIC, 16));
g.setColor(Color.RED);
g.drawString("Hello World!", 100, 50);
Слайд 41Задача 3
Нарисовать в своей панели снежную бабу. С носом-морковкой.
Слайд 42Как рисовать статическую картинку?
Слайд 43Задача 4
Рисуем линию от центра панели до левого верхнего угла
Слайд 44Задача 5
Рисуем линию от центра панели до правого верхнего угла
Слайд 45Задача 6
Рисуем много линий от центра панели – до верхнего
края панели - от левого до правого верхнего угла –
с шагом 20 (10, 5, 2, 1)
Слайд 46Задача 6 - Код
package lect2;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class MyPanel1
extends JPanel {
public void paint(Graphics g) {
super.paint(g);
int x = 0;
while
(x < this.getWidth()) {
g.drawLine(this.getWidth() / 2,
this.getHeight() / 2,
x, 0 );
x += 20;
}
}
}
Слайд 51Задача 10 - код
...
public class MyPanel1 extends JPanel {
public void
paint(Graphics g) {
super.paint(g);
int y = 0;
while (y < this.getHeight()) {
int
x = 0;
while (x < this.getWidth()) {
g.drawLine(0, 0, x, y );
x += 1;
}
y+=50;
}
}
}
Слайд 52Задача 11
Заполнить треугольниками верхнюю часть панели в строку
Слайд 53Задача 11.1
Нарисовать треугольник – в верхнем левом углу.
Слайд 54Задача 11.1 – код 1
public class MyPanel1 extends JPanel {
public
void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
g.drawLine(10, 10, 30, 10);
g.drawLine(30, 10, 20, 30);
g.drawLine(20,
30, 10, 10);
}
}
Слайд 55Задача 11.1 – код 2
public class MyPanel1 extends JPanel {
public
void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
int x = 20;
int y = 20;
g.drawLine(x
- 10, y - 10, x + 10, y - 10);
g.drawLine(x + 10, y - 10, x, y + 10);
g.drawLine(x, y + 10, x - 10, y - 10);
}
}
Слайд 56Задача 11.2
Заполнить треугольниками верхнюю часть панели в строку
Слайд 57Задача 11.2 – код
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
int x =
20;
int y = 20;
while (x
- 10, y - 10, x + 10, y - 10);
g.drawLine(x + 10, y - 10, x, y + 10);
g.drawLine(x, y + 10, x - 10, y - 10);
x += 30;
}
}
Слайд 58Задача 11.3
Заполнить треугольниками вот так:
Слайд 59Задача 11.3 - код
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
int y =
20;
while (y
(x <= this.getWidth() - 20) {
g.drawLine(x-10, y-0, x+10, y-10);
g.drawLine(x+10, y-10, x, y+10);
g.drawLine(x, y+10, x-10, y-10);
x += 30;
}
y += 30;
}
}
Слайд 60Задача 11.3+
Заполнить треугольниками вот так:
Слайд 61Задача 12
Нарисовать многолучевое солнце используя sin, cos и мозг
Слайд 62Домашнее задание
Установить Eclipse (ТОЧНО) и WindowBuilder
Прочитать «Разработка GUI v 5.0.docx»
ВСЮ!
Слайд 63Источники информации
Методички:
«Основные управляющие конструкции v 5.0.docx»
«Разработка GUI v 5.0.docx»