Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java -texnologiya.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
2.62 Mб
Скачать

1.6.Выбор фигуры

В примере показано, как во время выполнения программы можно изменять свойства объекта TShape. Изменение цвета объекта - событие OnChange для ColorGrid1.

Листинг 7. Graph.java - выбор фигуры

 ----------------------------------------------------------------

// Импортируем пакеты классов

import java.awt.*; // элементы граф. интерфейса

import java.applet.*;// апплеты

import java.awt.event.*;// обработчик событий

public class Graph extends Applet

                           implements MouseListener, ItemListener {

//Цвета квадратиков с цветом...

   Color colors[]={Color.black,new Color(156,48,27),

                   new Color(25,148,5),new Color(139,127,10),

                   new Color(44,32,139),new Color(138,28,135),

                   new Color(80,143,126),new Color(199,199,199),

                   Color.gray,Color.red,new Color(144,244,63),

                   Color.yellow,Color.blue,new Color(235,92,183),

                   new Color(119,234,233),Color.white};

   int X,Y;

   Color clr;

   CheckboxGroup t;//группа флажков...

   Checkbox cir,ell,rec;//Флажки, являющие собой круг,

                       // эллипс и прямоугольник соответственно...

//Сетка координат...

   int coordsX[]={33,66,99,132,152+13};

   int coordsY[]={33,66,99,132,152+13};

   public void init() {

         setLayout(null);

         setBackground(new Color(25,148,178));

         this.addMouseListener(this);

         clr=Color.black;

         t=new CheckboxGroup();

         cir=new Checkbox("Circle",t,false);

         ell=new Checkbox("Ellipse",t,false);

         rec=new Checkbox("Rectangle",t,false);

         add(cir);

         add(ell);

         add(rec);

         cir.addItemListener(this);

         ell.addItemListener(this);

         rec.addItemListener(this);

         cir.reshape(203, 33, 100, 23);

         ell.reshape(203, 73, 100, 23);

         rec.reshape(203, 115, 100, 23);

         Label autor=new Label("(c) 2006. Khramkov Ivan...");

         autor.setBounds(23,373,333,33);

         add(autor);

      }

   public void paint(Graphics g){

         g.setColor(Color.black);

         g.drawRect(23,23,147,163);

         g.drawLine(23,159,170,159);

         g.drawRect(193,23,147,163);

         g.drawRect(73,193,210,173);

         g.drawString("Now color:",29,177);

         g.fillRect(93,167,53,15);

         g.drawRect(93,167,53,15);

         g.setColor(new Color(25,148,178));

         g.fillRect(74,194,207,167);

         int i,j;

         int k=0;

         int step1=0;

         int step2=0;

// Рисование сетки цветов (квадратиков с цветом)...

         for(i=0;i<=3;i++)

            {

               step1=step1+33;

               for(j=0;j<=3;j++)

                  {

                     step2=step2+33;

                     g.setColor(colors[k]);

                     g.fillRect(step1,step2,20,20);

                     g.setColor(Color.black);

                     g.drawRect(step1-1,step2-1,22,22);

                     k++;

                  }

               step2=0;

            }

         coordsX[4]=10000;

      }

// Функция рисует отмеченную фигуру с цветом color...

   public void drawObj(Color color)

      {

         Graphics img=getGraphics();

         paint(img);

         img.setColor(color);

         img.fillRect(93,167,53,15);

         boolean chst=cir.getState();

         if (chst)//если выбран круг...

            img.fillArc(103,203, 153, 153, 0, 360);

         chst=ell.getState();

         if (chst) //если выбран эллипс...

            img.fillArc(93,223, 173, 123, 0, 360);

         chst=rec.getState();

         if (chst)//если выбран прямоугольник...

            img.fillRect(93,223,169,123);

         img.setColor(Color.black);

         img.drawRect(93,167,53,15);

      }

// Функция определяет, щелкнули ли по квадратику с цветом...

// Если да - вызывает функцию drawObj(clr),

// где clr - цвет квадратика, по которому щелкнули...

   public void mousePressed(MouseEvent me)

      {

         X = me.getX();

         Y = me.getY();

         int i,j;

         Graphics g=getGraphics();

         for(i=0;i<=3;i++)

            for(j=0;j<=3;j++)

               if(X>=coordsX[i] & X<coordsX[i+1]-13 &

                 Y>=coordsY[j] & Y<coordsY[j+1]-13 & X<=152)

                  {

                     g.setColor(new Color(167,148,142));

                     clr=colors[4*i+j];

                     drawObj(clr);

                     break;

                  }

      }

//Функция, реагирующая на выбор флажка...

   public void itemStateChanged(ItemEvent ie)

      {

         drawObj(clr);

      }

   public void mouseReleased(MouseEvent e) {;}

   public void mouseClicked(MouseEvent e) {;}

   public void mouseEntered(MouseEvent e) {;}

   public void mouseExited(MouseEvent e) {;}

}

Листинг Graph.html

---------------------------------------------------------

<html><title>Khramkov Ivan presents...</title>

<body bgcolor=#FFFFFF>

<center>

   <font color=#FFFFFF>

      <h1>Move the Colors...</h1>

      <br>

   </font>

   <applet code=Graph.class width=365 height=403></applet>

</center>

</body></html>

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]