Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как работает этот метод? 
:(
    Опции темы
CrasyMen
Дата 14.11.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: 2
Всего: 3



чуть не свернул себе москsmile
объясните как оно работает:
Код

    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
        new NewJFrame2().setVisible(true);
        }
    });
    }


на всякий случай, вот весь файл:
Код

package javaapplication5;
public class NewJFrame2 extends javax.swing.JFrame {
    public NewJFrame2() {
    initComponents();
    }                     
    private void initComponents() {
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );
        pack();
    } 
    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
        new NewJFrame2().setVisible(true);
        }
    });
    }
}

взято з голого фрейма, генерируемого нетбинсом


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
goodday1941
Дата 14.11.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9





--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
CrasyMen
Дата 14.11.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: 2
Всего: 3



Наверно я не совсем подробно объяснил проблему. Я не могу разобраться с хитросплетениями, а именно с параметром метода java.awt.EventQueue.invokeLater(). 
Например, тут та же загвоздка:
Код

    public ActionListener getButtonL() {
        return new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("ButtonListener");
            }
        };
    }



--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Kangaroo
Дата 14.11.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Попробую объяснить )
Этот код:
Код

new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("ButtonListener");
            }
        };

Создает объект анонимного класса, который имплементирует интерфейс ActionListener.
То есть это можно заменить на такое:
Код

//class 
class MyActionListener implements ActionListener {
   public void actionPerformed(ActionEvent e) {
                System.out.println("ButtonListener");
    }

}
......
//create object of this class
new MyActionListener();

Но это писать больше и неудобно, поэтому все делают как у тебя в примере  smile 


--------------------
Lost....
PM MAIL MSN   Вверх
v2v
Дата 14.11.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



java позволяет в параметре создавать не именованный экземпляр класса, тоесть непосредственно вызывать new Конструктор_класса() ,мало того  можна таким образом вызвать конструктор , а дальше открыть скобки и начать создавать новый класс(писать методы этого класса), который будет дочерним к классу конструктор которого вызван! вот так вот!.

Добавлено через 1 минуту и 21 секунду
не успел smile


--------------------
PM   Вверх
Vurn
Дата 14.11.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Код

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
        new NewJFrame2().setVisible(true);
        }
    });


Данная конструкция стандартна. Дело в том, что AWT отрисовывается в отдельном треде, а сам AWT/Swing - non thread-safe. Так как AWT|Swing потоко-небезопасны, куски кода манипуляции ими должны отрабатывать строго в одном и том же треде, который называетcя EventDispatchThread. А данная контрукция создает имплементацию интерфейса, но не выполняет ее сразу, а ставит в очередь внутри вышеупомянутого треда. По мере свободы отработается метод run() данной имплементации интерфейса.
PM MAIL   Вверх
CrasyMen
Дата 14.11.2007, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: 2
Всего: 3



Kangaroo, с какой версии jdk можно делать это?

Это сообщение отредактировал(а) CrasyMen - 14.11.2007, 21:49


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Vurn
Дата 14.11.2007, 21:54 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Цитата(CrasyMen @ 14.11.2007,  21:46)
Kangaroo, с какой версии jdk можно делать это?

Это было с версии 1.0
PM MAIL   Вверх
Kangaroo
Дата 14.11.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(CrasyMen @  14.11.2007,  20:46 Найти цитируемый пост)
Kangaroo, с какой версии jdk можно делать это?

хм, хороший вопрос.. я начал работать только с Java 5.0,  там точно работает smile 
может более опытные форумчане подскажут.


--------------------
Lost....
PM MAIL MSN   Вверх
nornad
Дата 15.11.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 6
Всего: 31



Цитата(CrasyMen @  15.11.2007,  00:46 Найти цитируемый пост)
Kangaroo, с какой версии jdk можно делать это?

Код

invokeLater

public static void invokeLater(Runnable runnable)

    Causes runnable to have its run method called in the dispatch thread of the system EventQueue. This will happen after all pending events are processed.

    Parameters:
        runnable - the Runnable whose run method should be executed synchronously on the EventQueue
    Since:
        1.2
    See Also:
        invokeAndWait(java.lang.Runnable)

То есть, с версии 1.2. А вообще, жвадок, как обычно, рулит. smile

Добавлено через 7 минут и 15 секунд
Забыл сказать - информация из жавадока от 1.6_01 (если кому интересно, конечно).


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Kangaroo
Дата 15.11.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



nornad, 
CrasyMen'y нужно не когда появился метод invokeLater smile, а когда появилась возможность cоздать объект анонимного класса, который имплементирует определенный интерфейс. 
Вот Vurn написал:

Цитата(Vurn @  14.11.2007,  20:54 Найти цитируемый пост)
Это было с версии 1.0 

Может у кого-нибудь другие варианты?



--------------------
Lost....
PM MAIL MSN   Вверх
nornad
Дата 15.11.2007, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 6
Всего: 31



Цитата(Kangaroo @  15.11.2007,  03:49 Найти цитируемый пост)
Может у кого-нибудь другие варианты?

У меня вариантов нет. Работаю с джавой с версии 1.4. Там это точно есть.
Вообще, как мне кажется, вопрос вряд ли имеет какую-то ценность, окромя академической. Сейчас и на 1.4 (ака джава 2) пишут уже относительно нечасто, а про более ранние версии вряд ли стоит уже думать (ну, если только нет необходимости поддерживать старый проект, конечно).


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
CrasyMen
Дата 15.11.2007, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: 2
Всего: 3



Цитата(nornad @  15.11.2007,  01:35 Найти цитируемый пост)
как мне кажется, вопрос вряд ли имеет какую-то ценность

книга, которую я читаю (Кей С.Хорстман,Гари Корнелл - Java_2) описывает jdk1.4 и в ней об этом не сказано. Поэтому и спрашивал. 

Это сообщение отредактировал(а) CrasyMen - 15.11.2007, 07:22


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
AlexeyVorotnikov
Дата 15.11.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 3
Всего: 18



Цитата(Kangaroo @  15.11.2007,  01:49 Найти цитируемый пост)
когда появилась возможность cоздать объект анонимного класса, который имплементирует определенный интерфейс. 

Эта фича появилась достаточно рано. Самое позднее в версии 1.2.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.