Задания
1. Введите и запустите программу из приведенного выше примера 1.
2. Измените программу, чтобы при нажатии клавиши мыши движение текста не прекращалось, а
а) увеличивался размер шрифта текста;
б) изменялся цвет текста.
3. Измените программу, чтобы текст перемещался
а) по горизонтали слева направо и обратно;
б) по горизонтали справа налево, а после выхода за левую границу окна снова появлялся справа;
в) по горизонтали слева направо, а после выхода за правую границу окна снова появлялся слева;
г) по вертикали сверху вниз и обратно.
4. Измените программу, чтобы вместо текста перемещался
а) круг;
б) квадрат;
в) прямоугольник.
5. Добавьте в окно программы кнопку, при нажатии которой
а) движение фигуры приостанавливается, а при следующем нажатии возобновляется;
б) изменяется цвет закраски фигуры;
в) изменяется цвет контура фигуры;
г) изменяется размер фигуры.
Графика и потоки в языке j#. Кнопки.
Пример программы 1.
Пример программы 1. Этап 1. Только окно.
package cjLab3;
// В окне по диагонали вниз движется слово "Hello".
// При нажатии клавиши мыши движение прекращается.
import java.awt.*;
public class ThreadTest extends Frame
{
public ThreadTest()
{
this.setTitle("Бегущая строка");
this.setSize(500,500);
show();
}
public static void main()
{
ThreadTest tT = new ThreadTest();
}
}
Пример программы 1. Этап 2. Простой поток
package cjLab3;
// В окне по диагонали вниз движется слово "Hello".
// При нажатии клавиши мыши движение прекращается.
import java.awt.*;
public class ThreadTest extends Frame implements Runnable
{
int x,y;
Thread thread;
public ThreadTest()
{
this.setTitle("Бегущая строка");
this.setSize(500,500);
x=5;
y=5;
show();
thread= new Thread(this);
thread.start();
}
public void paint(Graphics g)
{
g.drawString("Hello",x,y);
}
public void run()
{
while (x < 100)
{
x += 5; y += 20;
try
{
Thread.sleep(500);
repaint();
}
catch (InterruptedException e) { }
}
}
public static void main()
{
ThreadTest tT = new ThreadTest();
}
}
Пример программы 1. Этап 3. Использование мыши
package cjLab3;
// В окне по диагонали вниз движется слово "Hello".
// При нажатии клавиши мыши движение прекращается.
import java.awt.*;
Import java.Awt.Event.*;
public class ThreadTest extends Frame implements Runnable
{
int x,y;
Thread thread;
public ThreadTest()
{
this.setTitle("Бегущая строка");
this.setSize(500,500);
x=5;
y=5;
show();
this.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent mE)
{
x = 0; y = 0;
}
});
thread= new Thread(this);
thread.start();
}
public void paint(Graphics g)
{
g.drawString("Hello",x,y);
}
public void run()
{
while (x < 100)
{
x += 5; y += 20;
try
{
Thread.sleep(500);
repaint();
}
catch (InterruptedException e) { }
}
}
public static void main()
{
ThreadTest tT = new ThreadTest();
}
}
Пример программы 1. Этап 4. Предпоследний этап
package cjLab3;
// В окне по диагонали вниз движется слово "Hello".
// При нажатии клавиши мыши движение прекращается.
import java.awt.*;
import java.awt.event.*;
public class ThreadTest extends Frame implements Runnable
{
int x,y;
Thread thread;
boolean life;
public ThreadTest()
{
this.setTitle("Бегущая строка");
this.setSize(500,500);
life=true;
x=5;
y=5;
show();
this.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent mE)
{
life = false;
}
});
thread= new Thread(this);
thread.start();
}
public void paint(Graphics g)
{
g.drawString("Hello",x,y);
}
public void run()
{
while (life)
{
x += 5; y += 20;
try
{
Thread.sleep(500);
repaint();
}
catch (InterruptedException e) { }
}
}
public static void main()
{
ThreadTest tT = new ThreadTest();
}
}
Пример программы 1. Этап 5. Последний этап
package cjLab3;
// В окне по диагонали вниз движется слово "Hello".
// При нажатии клавиши мыши движение прекращается.
import java.awt.*;
import java.awt.event.*;
public class ThreadTest extends Frame implements Runnable
{
int x,y;
Thread thread;
boolean life;
public ThreadTest()
{
this.setTitle("Бегущая строка");
this.setSize(500,500);
life=true;
x=5;
y=5;
show();
this.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent mE)
{
life = false; //x = 0; y = 0;
}
});
this.addWindowListener(new WindowAdapter()
{
// Функция реакции на закрытие окна
public void windowClosing(WindowEvent mE)
{
System.exit(0);
}
});
thread= new Thread(this);
thread.start();
}
public void paint(Graphics g)
{
Font f= new Font("Verdana", Font.ITALIC, 40);
g.setFont(f);
g.setColor(Color.blue);
g.drawString("Hello",x,y);
}
public void run()
{
while (life)
{
x += 5; y += 20;
try
{
Thread.sleep(500);
repaint();
}
catch (InterruptedException e) { }
}
}
public static void main()
{
ThreadTest tT = new ThreadTest();
}
}
Пример программы 2.
package cjLab3;
// В окне приложения изображен квадрат и вписанный в него круг и две кнопки "Clear"
// и "Draw". При нажатии кнопки "Clear" рисунок стирается, а при нажатии "Draw" –
// восстанавливается.
import java.awt.*;
import java.awt.event.*;
public class CWnd extends Frame // Класс прикладного окна
{
boolean clear; // Очистить окно
Rectangle rect; // Ссылка на объект прямоугольника
Button but1,but2; // Ссылки на объекты-кнопки
public CWnd() // Конструктор окна
{
// Установить свойства окна
this.setTitle("Использование кнопок");
this.setSize(200, 200);
this.show();
this.setLayout(null);
// Создать объект прямоугольник
rect = new Rectangle(100,50,100,100);
clear=false;
// Создать объекты кнопок
but1= new Button("Clear"); // создание
but1.setLocation(10,30);// координаты кнопки but1
but1.setSize(70,30); // размер кнопки
but2= new Button("Draw"); // кнопок
but2.setLocation(10,80);
but2.setSize(70,30);
// Добавить кнопки к форме
add(but1); // добавить кнопку к форме
add(but2);
// Реализация события для кнопоки but1
but1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent aE)
{
clear=true;
repaint();
}
});
// Реализация события для кнопоки but2
but2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent aE)
{
clear=false;
repaint();
}
});
}
//------------------------------
// функция перерисовки окна
public void paint(Graphics args)
{
if (clear)return;
args.setColor(Color.yellow);
args.drawRect(rect.x, rect.y, rect.width, rect.height);
args.setColor(Color.black);
args.fillRect(rect.x, rect.y, rect.width, rect.height);
args.setColor(Color.red);
args.fillOval(rect.x, rect.y, rect.width, rect.height);
}
//------------------------------
public static void main()
{
CWnd cwnd= new CWnd(); // Создать объект окна
}
}