Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев_С++_CLI_C#_Java_J#.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.17 Mб
Скачать

Import java.Awt,event.*;

class CTextBox_Button extends Frame // Класс прикладного окна

{

TextField ourTextBox;

Button ourButton;

Point point;

Color [] colors;

lnt n;

public CTextBox_Button ()

{

setTltle ("Russian flag"); // Установить заголовок прикладного окна

// Редактор

// Кнопка

// Начальные координаты строки

// Массив цветов флага

// Индекс массива цветов colors

// Конструктор

setSize (400, 200);

this.setBackground (Color.lightGray);

setLayout (new FlowLayout ());

ourTextBox= new TextField (); // Создать редактор

ourTextBox.setSlze (150, 20); // Установить размер

ourTextBox.setText ("Russia"); // Установить текст в редакторе

add (ourTextBox); // Добавить редактор в форму

ourButton= new Button ("OK"); // Создать кнопку

add (ourButton); //Добавить кнопку к форме

// Подписать обработчик на событие кнопки

чи t«лш АлНлп! icfnnar / \ u l ^l l ^ I I r \ ^ U V I IUIJVSal 1^1 У J

<pub lic void actionPerformed (ActionEvent aE)

n++; //Кследующемуцветуфлага

lf(n>=3)n=0;

repaint ();

>

»;

// Подписать обработчик на событие при нажатии на мышь

this,addMouseLlstener (new MouseAdapter ()

{

public void mousePressed (MouseEvent mE)

<

System.out.println ("Mouse: x= " + mE.getX ( )

+ " y= " + mE.getY ( ));

point.x= mE.getX ();

point.y= mE.getY ();

repaint ( );

>

»;

// Примененить внутренний анонимный классдля закрытия окна

thls.addWindowListener (new WindowAdapter ()

{

public void wlndowCloslng (WlndowEvent wE)

<

System.exit (0);

>

»;

n= 0;

polnt= new Point ( );

point.x= 100; point.y= 100;

colors= new Color [3]; // Создать массив цветов

colors [0]= Color.white; // Серый цвет

colors [1]= Color.blue; // Синий цвет

colors [2]= Color.red; // Красный цвет >

// Перерисовать область клиента окна

public vold paint (Graphics g)

{

Rectangle rect= new Rectangle (10, 40, 130, 30);

for (lnt 1= 0; I < 3; i++) // Нарисовать флаг

{

g,setCoior (colors[i]);

g.flllRect // Нарисовать прямоугольник

(rect.x, rect.y, rect.width, rect.height);

rect.translate (0, 30); // Переместить прямоугольник вниз

// Нарисовать строку от носика курсора мыши

g,setColor (colors[n]);

g.drawString (ourTextBox.getText ( ), polnt.x, point.y);

>

public static void maln ( ) // Главная функция

<

CTextBox_Button cT= new CTextBox_Button ();

cT.show ( );

>

>

Для упрощения размещения управляющих элементов в прикладном ок-

не на языке Java применяются объекты так называемых менеджеров компо-

новки классов FIowLayout, BorderLayout, CardLayout и GridLayout. Каждый

менеджер компоновки располагает управляющие элементы, добавленные в

контейнер окна с помощью функции add(), в прикладном окне в соответствии

с принятыми в нём правилами размещения. Вызов в конструкторе функции

setLayout (new FIowLayout ());

устанавливает менеджер FIowLayout компоновки, который размещает эле-

менты "потоком" от центра, начиная с верхней части окна, что иллюстрирует

рис. 10.8.4.

Но можно разместить управляющие элементы, применив свойство set-

Location(), в любом месте окна, отказавшись от менеджеров компоновки. Для

этого в конструкторе вызывается

setLayout (null);

Рис. 10.8.4. Прикладное окно приложения примера 10.8.2 с управляющими

элементами на языке Java

Пример 10.8.3. Программа с управляющими элементами на языкс

C++/CLI.

///////////////

// C++/CLI

#include "stdafx.h"

#using <System.Drawing.dll>

#using <System.Windows.Forms.dll>

using namespace System;

using namespace System::Windows::Forms;

using namespace System::Drawing;

ref class CTextBox_Button: public Form // Класс прикладного окна

{

TextBox ^pTextBox; // Дескриптор редактора

Button ^pButton; // Дескриптор кнопки

n ~ f ~ L м л | п 1 . // U 9 n 9 n L U L i a V n A M n i l U S V L I r ^ n A I / I J

ruiiit ^uiiiv., // начальные координаты строки

array<Color ^> ^colors; // Массив цветов