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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не работает postEvent для кнопки 
:(
    Опции темы
access
Дата 30.6.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго дня. Есть код:
Код

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class PostEvent implements ActionListener {
    private static JButton b1 = new JButton("1");
    private static JButton b2 = new JButton("2");
    private ActionEvent ae;

    public static void main(String[] args) {javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new PostEvent();
        }
        });
    }


    public PostEvent() {
        JFrame frame = new JFrame("");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        b1.setBounds(0,0,50,25);
        b2.setBounds(0,30,50,25);
        frame.getContentPane().add(b1);
        frame.getContentPane().add(b2);
        b1.addActionListener(this);
        b2.addActionListener(this);
        ae = new ActionEvent((Object)b1, ActionEvent.ACTION_PERFORMED, "");
        frame.setPreferredSize(new Dimension(150, 100));
        frame.pack();
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==b1)
        {
            System.out.println("from first");
        }
        if (e.getSource()==b2)
        {
            System.out.println("from second");
            java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(ae);
        }
    }
}

Подскажите, почему не срабатываетвызов кнопки b1, хотя если написать
Код

((JButton)ae.getSource()).doClick();
, всё работает...
PM MAIL   Вверх
dorogoyIV
Дата 30.6.2009, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 36
Всего: 46



 smile 
во первых срабатывает

во вторых можешь написать так:
Код

//  ae = new ActionEvent((Object)b1, ActionEvent.ACTION_PERFORMED, "");

и ничего не изменится, т.е. твой объект не задействован

в третьих
Код

  if (e.getSource().equals(b1))


PM MAIL   Вверх
access
Дата 30.6.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

во первых срабатывает

и где это видно? При "срабатывает" я ожидал увидеть (при нажатии на 2-ю кнопку) это:

from second
from first

Цитата

во вторых можешь написать так:
//  ae = new ActionEvent((Object)b1, ActionEvent.ACTION_PERFORMED, "");
и ничего не изменится, т.е. твой объект не задействован

Попробовал, прикольно. Валит нуллпоинтер эксепшн.
Цитата

в третьих
if (e.getSource().equals(b1))

Хм, даже и не знаю, куда это воткнуть. У меня есть событие, которое я хочу потом программно вызвать. Вы не могли бы развернуть свой ответ, а то после обеда туго соображается (((...
PM MAIL   Вверх
dorogoyIV
Дата 30.6.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 36
Всего: 46



значит не весь рабочий код приведен.
потому, что, я просто тупо скопировал, и все работало!

а объекты сравниваются через equals , а не через "=="
PM MAIL   Вверх
access
Дата 30.6.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Любопытно, теперь уже я к себе тупо скопировал, и ничего не работает (... (код приведен весь) Проверил на двух машинах - не работает (везде Java 1.5, идея и эклипс). У вас какая версия ждк?
Кому не трудно, проверьте, плиз, код на своей машине и поделитесь результатом.
При нажатии на кнопку "2" должно выдавать в консоль

from second
from first


Это сообщение отредактировал(а) access - 30.6.2009, 16:13
PM MAIL   Вверх
access
Дата 1.7.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот я и дома код проверил, там Java 1.6, и тоже не работает. Ума не приложу, dorogoyIV , как у вас оно работает. Может у вас import-часть другая.
Такой способ вызова события встречал в инете не один раз, и пример вроде как рабочий. Однако, если за примером шло обсуждение, то из разряда "почему у меня не работает". Кто-нибудь знает как сделать такой вызов? (это ((JButton)ae.getSource()).doClick() не предлагать)

PS и где все, повымирали в отпуск, что ли?

Это сообщение отредактировал(а) access - 1.7.2009, 10:22
PM MAIL   Вверх
dorogoyIV
Дата 1.7.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 36
Всего: 46



действительно, скомпилил и запустил под другой версией, тоже не работает  smile 
PM MAIL   Вверх
access
Дата 1.7.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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