![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Public void paint (Graphics g)Содержание книги
Поиск на нашем сайте
{ super.paint (g); g.setColor(col); for (int i= 0; i < 2; i++) { g.drawOval(pBall[i].x, pBall[i].y, 20, 20); pBall[i].w= this.getSize().width; pBall[i].h= this.getSize().height; } } }
class BallsCj1 { public static void main () { Balls pBalls= new Balls (); // Создать объекты класса Balls pBalls.Start(); //!! System.out.println("objects are working"); // Объекты функционируют 20 мс try { Thread.sleep (20); } catch(InterruptedException iE){} pBalls.Suspend (); // Приостановить объекты System.out.println("objects are suspend and are resumed"); pBalls.Resume (); // Возобновить выполнение объектов // Объекты функционируют 20 мс try { Thread.sleep (20); } catch(InterruptedException iE){} //pBalls.Suspend (); // Приостановить объекты //!! } } /* Результат: Появилось прикладное окно с двумя нарисованными шарами. objects are working object 1 n= 0 object num= 1 n= 0 object 2 n= 0 object num= 2 n= 0 object 1 n= 1 object num= 1 n= 1 object 2 n= 1 object num= 2 n= 1 objects are suspend and are resumed object 1 n= 2 object num= 1 n= 2 object 2 n= 2 object num= 2 n= 2 object 1 n= 3 object num= 1 n= 3 object 2 n= 3 object num= 2 n= 3 */
Этап 5. Разработка дочернего окна с кнопкой Создадим дочернее окно с кнопкой, управляющей перемещением шаров в области клиента прикладного окна. Диаграмма классов и реализация пятого этапа представлены на рис. 5.3.5.1 и в примере 5.3.5.1. Рис 5.3.5.1. Диаграмма классов Balls–приложения пятого этапа
Пример 5.3.5.1. Реализация пятого этапа разработки Balls–приложения на языке C#. //////////////////// // C# File BallsCs5.cs // Файл BallsCs5.cs полностью включает файл BallsCs4.cs, дополнив его // новым классом User, порождённым из класса Balls. Класс User содержит // управляющий элемент–кнопку, нажатие на которую приостанавливает // или возобновляет перемещение шаров. // Изменения файла BallsCs4.cs выделены жирным шрифтом ... //------------------------------------- class Ball // Класс обычного объекта { ...
void BallFunc () { int n= 0; while (life) { ... } Console.Write ("Объект {0}", num.ToString ()); Console.WriteLine (" завершён"); } } ... //------------------------------------- class User: Balls // Класс пользователя шаров { private bool run; Form pChildForm; Button pBut; Public User () { run= true; //--------------- pBut= new Button(); pBut.Location = new Point (32, 24); pBut.Name = "pBut"; pBut.Size = new System.Drawing.Size (32, 24); pBut.Text = "OK"; pBut.Click += new EventHandler (OnBut); ClientSize = new System.Drawing.Size (200, 150); //--------------- pChildForm= new Form (); pChildForm.Location= new Point (250, 10); pChildForm.Size= new Size (250, 250); pChildForm.Text= "User"; pChildForm.Show (); pChildForm.Controls.Add (pBut); pChildForm.ClientSize = new System.Drawing.Size (200, 62); } //--------------- void OnBut (object obj, EventArgs arg) // Обработчик кнопки
{ Console.WriteLine ("OkMouse"); If (run) { run= false; Suspend (); } Else if (!run) { run= true; Resume (); } } //------------------------- static void Main () { Application.Run (new User ()); } } /* Результат: Появились прикладное окно с перемещающимися шарами и дочернее окно с кнопкой. При нажатии на кнопку можно приостанавливать или возобновлять движение шаров. */
Рис. 5.3.5.1. Две формы с консолью Balls–приложения 5 этапа
Пример 5.3.5.2. Реализация пятого этапа разработки Balls–приложения на языке Java. package BallsCj5; //////////////////// //C# File BallsCj5 import java.util.*; import java.awt.*; import java.awt.event.*;
class Obs { public int num, n;
public Obs (int num, int n)
{this.num= num; this.n= n;}
int getNumber(){return num;}
int getN(){return n;} } class Ball extends Observable implements Runnable // Класс обычного объекта { int num; Thread thread; boolean run; boolean waiting= false; boolean life; public int x, y; public int w, h; public int dx, dy;
public Ball (int Num, int X, int Y, int Dx, int Dy)// Конструктор { num= Num; life= false; run= false; w= 100; h= 100; x= X; y= Y; dx= Dx; dy= Dy; Start (); }
public void Start () // Стартовать { if (!run) { run= true; life= true; thread= new Thread (this); thread.start (); } } //--------------- synchronized public void Suspend () // Приостановить { if (run) { run= false; waiting=true; } } //--------------- synchronized public void Resume () // Возобновить { if (!run) { run= true; waiting=false; notify(); } } //--------------- public void run () // Выполнить поток { int n= 0; while (life) { System.out.print("object "+num); System.out.println(" n= "+n); n++; x += dx; y += dy; if (x>w || x<0) dx= -dx; if (y>h || y<0) dy= -dy;
// Уведомить setChanged(); notifyObservers(new Obs(num, n)); try { Thread.sleep (100); synchronized(this) { if(waiting) wait(); } } catch(InterruptedException iE){} } System.out.print("object "+num); System.out.println(" finished "); } }
//------------------------------------- class Balls extends Frame implements Observer // Класс объектов { Ball [] pBall; Color col; public Balls () { this.setTitle("Balls"); this.setSize(400, 300); col= Color.red; pBall= new Ball [2]; for (int i= 0; i < 2; i++) { pBall[i]=new Ball (i, i*3+10, 1*3+15, i*3+5, i*3+5); pBall[i].addObserver(this); } this.show(); Start (); } //--------------- public void Start () // Стартовать { for(int i=0; i < 2; i++) { pBall[i]. Start (); } } //--------------- public void Suspend () // Возобновить { for (int i=0; i < 2; i++) pBall[i].Suspend (); } //--------------- public void Resume () // Приостановить { for (int i= 0; i < 2; i++) pBall[i].Resume (); }
public void update (Observable r, Object ob) // Обработчик события ev { Obs obs= (Obs) ob; System.out.print("object num= "+ obs.num); System.out.println(" n= "+ obs.n); repaint(); }
public void paint (Graphics g) { super.paint (g); g.setColor(col); for (int i= 0; i < 2; i++) { g.drawOval(pBall[i].x, pBall[i].y, 20, 20); pBall[i].w= this.getSize().width; pBall[i].h= this.getSize().height;
} } }
class User extends Balls // Класс пользователя шаров { private boolean run; Frame pChildForm; Button pBut; Public User () { run= true; //--------------- this.setLayout(null); pBut= new Button("OK"); pBut.setLocation(60, 60); pBut.setSize (32, 24);
|
||||||
Последнее изменение этой страницы: 2016-08-01; просмотров: 189; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.47.31 (0.008 с.) |