powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Есть ли встроенные инструменты для создания собственных событий ?
11 сообщений из 11, страница 1 из 1
Есть ли встроенные инструменты для создания собственных событий ?
    #34235086
Хочу знать
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли встроенные инструменты для создания собственных событий ?

автор
На этом уроке мы расмотрим еще один пример класса с событием. Класс наш будет представлять из себя игральную кость, в классе будет единственный метод rnd, возвращающий случайное число от 1 до 6. Если этот метод возвратит 6, то сгенерируется событие max.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
namespace test
{
    //Объявление делегата.
     public  delegate  void  EventHandler();
    //Класс "Игральная кость".
     class  MyDie
    {
        Random r;
        //Объвление события на основе делегата.
         public  event EventHandler max;
        //Конструктор.
         public  MyDie()
        {
            r= new  Random();
        }
        //Объявление метода, в котором вызывается событие.
         public   int  rnd()
        {
            //Случаное число от 1 до 6.
             int  res = r.Next( 6 )+ 1 ;
             if (res== 6 )
            {
                //Вызываем событие.
                max();
            }
             return  res;
        }
    }
    //Класс для тестирования события.
     class  Test
    {
        //Обработчик для события.
         public   static   void  z()
        {
            Console.WriteLine("Вызов обработчика");
        }
        //Метод main.
         static   void  Main(string[] args)
        {
            //Создаем экземпляр события.
            MyDie w= new  MyDie();
            //Добавление обработчика события.
            w.max+= new  EventHandler(z);
            //Вызов метода, в котором вызывается событие.
             for ( int  k= 0 ; k< 10 ; k++)
            {
                Console.WriteLine("{0}", w.rnd());
            }
        }
    }
}


есть ли аналоги в Java ?
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235108
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет аналогов - не знаю C#, поэтому не напишу. Насчет того - можно ли сделать в Java - да, можно. И при этом весьма легко и наглядно.
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235113
Хочу знать
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Leonidv не могли бы Вы продемонстрировать как в таких случаях поступают в Java ? Приветствуются любые ссылки на статьи / учебные пособия.
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235126
Хочу знать
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бего глянул на Swing ... подскажите пожалуйста, является ли дизайн такого рода стандартом в Java ? Не охота придумывать велосипед ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
 import  java.util.ArrayList;
 import  java.awt.event.ActionListener;
 import  java.awt.event.ActionEvent;


 public   class  MyInt {

     private   int  i;

     private  ArrayList<ActionListener> actionListeners;

     public  MyInt( int  i) {
         this .i = i;
    }

     public   int  getI() {
         return  i;
    }

     public   void  setI( int  i) {
         this .i = i;
         if  (i ==  0 ) {
            zeroEvent();
        }
    }

     public   void  addListener(ActionListener actionListener) {
         if  (actionListeners ==  null ) {
            actionListeners =  new  ArrayList<ActionListener>();
        }
        actionListeners.add(actionListener);

    }

     private   void  zeroEvent() {
         for  (ActionListener listener : actionListeners) {
            listener.actionPerformed( new  ActionEvent( this ,  123 , "something"));
        }
    }

}


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 import  java.awt.event.ActionListener;
 import  java.awt.event.ActionEvent;


 public   class  MyIntListener  implements  ActionListener {


     public   void  actionPerformed(ActionEvent e) {
        System.out.println("int is 0");
    }
}


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 import  javax.swing.*;
 import  java.awt.*;
 import  java.awt.event.WindowAdapter;
 import  java.awt.event.WindowEvent;
 import  java.awt.event.MouseListener;
 import  java.awt.event.WindowListener;


 public   class  Main {
     public   static   void  main(String[] args) {
        MyInt myInt =  new  MyInt( 3 );
        myInt.addListener( new  MyIntListener());
        myInt.setI( 0 );

    }
}
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235145
j s f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу знатьЕсть ли встроенные инструменты для создания собственных событий ?

есть ли аналоги в Java ?Нету конечно. И быть на самом деле не может. А в .NET 3.0 есть крутейшие фишки, прочитав про которые, ты будешь самым клевым женихом на потоке. Только пользоваться ими не сможешь научиться, но это ничего. Ведь ты все равно пойдешь Форды продавать
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235152
Хочу знать
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
j s f
это ты судишь по собственному опыту ?
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235155
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу знатьБего глянул на Swing ... подскажите пожалуйста, является ли дизайн такого рода стандартом в Java ? Не охота придумывать велосипед ...

Насколько я могу судить - да. Называется делегированием. Только необязательно awt events использовать. Например, я бы сделал проще с кубиком:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  interface  MyEvent {
   void  max();
 }
 
  class  Die {
    private  MyEvent eventsHandler =  null ;
   
    public   int  rnd() {
     //Случаное число от 1 до 6.
      int  res = r.Next( 6 )+ 1 ;
      if ((res== 6 ) && (eventsHandler)){
         eventsHandler.max()       
     }          
   }
 }
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235158
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я слышал о C#, он включает в себя некоторые паттерны на уровне языка. Именно это и хотел сказать вам j s f (только грубо сделал он это). Прочитайтей Гамму, и многое станет яснее.
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235193
j s f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeonidvНасколько я слышал о C#, он включает в себя некоторые паттерны на уровне языка. Именно это и хотел сказать вам j s f (только грубо сделал он это). Прочитайтей Гамму, и многое станет яснее.Просто уже тошнит каждый раз, когда открывается люк и из танка доносится "Эй! А нам папа-Microsoft такое пуперное открытие подарил, а вы про это что-нибудь слышали?" И приходится в ответ в танк кричать, "Да, уже пользуемся хz скока лет, а чо, вам Microsoft наплел, что это его открытие? бугагага! А что еще он наплел? Что в это 'открытие' они вбухали уйму ресурсов и поэтому только у них это работает отлаженно и безглючно?"
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34235467
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
j s f! Не провоцируйте флейм!

C уважением
Lord Mayton
...
Рейтинг: 0 / 0
Есть ли встроенные инструменты для создания собственных событий ?
    #34244520
Фотография SmaLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найдено на одном из форумовСоздаётся интерфейс

Код: plaintext
1.
2.
3.
4.
 public   interface  ISomeEventListener
{
     public   void  eventHappens(Event someEventData);
}

Класс который обрабатывает это событие импелментирует этот интерфейс.

У класса, который генерит события создаются 2 метода.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public   void  addEventListener(ISomeEventListener listener)
{
    this .someEventListeners.add(listener)
}

 private   void  riseSomeEvent(Event event)
{
    for ( int  i =  0 ; i <  this .someEventListeners; i++)
   { 
      ((ISomeEventListener) this .someEventListeners.get(i)).eventHappens(event)
   }
}

Теперь осталось ещё 2 манипуляции. Нужно подписать класс-слушатель на событие вызвав
Код: plaintext
   eventRiser.addSomeEventListener(someEventListener);

а в нужный момент создать событие;
Код: plaintext
   riseSomeEvent( new  Event("Событие произошло!"))

---------
Что ни делается, всЁ к лучшему!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Есть ли встроенные инструменты для создания собственных событий ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]