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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> собитие после закрытия JDialog 
:(
    Опции темы
BTR
Дата 14.3.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



можно ли выловить событие родительскимJFrame закрывая JDialog ??
т.е. в диалоге заполняется форма, а после закритя диалога, в родительском фрейме нада обновить табилцу (или еще чтонить).
написал интрфейс типа слушателя с одним методом и передаю его диалогу, а после закрытия диалога вызываю этот метод
но мне кажется это както криво все smile
можно ли как то в actionPerformed родителя выяснить когда закрылся диалог ??? а потом вызвать и обновить данные?
smile smile
PM MAIL   Вверх
AntonSaburov
Дата 14.3.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Пусть родительское окно реализует интерфейс WindowStateListener и отдай его дитятке. Когда дитятко закроется - вызовется метод родителя.
PM MAIL WWW ICQ   Вверх
djGri
Дата 14.3.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно так:
Код

     public class myDialog extends JDialog {
        private myJFrame parentFrame;
                public myDialog(myJFrame parentFrame) {
                        this.parentFrame = parentFrame;
                        ///.......  //
                }//constructor
/// ...... ///
     public void ActionPerformed(ActionEvent e)  {
                parentFrame.someFunction( someParameter);
    }//ActionPerformed(ActionEvent e) 


    }//class

public class myJFrame extends JFrame {

//....///
public void someFunction ( someParameter ) {
   /// ..... ///
}//someFunction ( someParameter )

}//class



Это сообщение отредактировал(а) djGri - 14.3.2005, 18:30
PM MAIL   Вверх
DarkDS
Дата 14.3.2005, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Передавать родительский фрейм в чайлд окно для вызова из последнего методов родительского фрейма без есть не очень хороший стиль. Во всяком случае нужно как минимум в инвоклайтер это делать...

А так. Самый простой и правильный способ - WindowStateListener

PM MAIL   Вверх
Domestic Cat
Дата 14.3.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Код

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

public class A extends JFrame implements WindowListener
{   
    JDialog d;
    JLabel label;
    A()
    {
        setSize(300, 300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        label = new JLabel("JDialog is shown");
        getContentPane().add(label);
        d = new JDialog(this, "Dialog", false);
        d.addWindowListener(this);
        d.show();
        
        setVisible(true);
    }    
    
    public void windowClosed(WindowEvent we)
    {        
    }
    public void windowActivated(WindowEvent we)
    {
    }
    public void windowDeactivated(WindowEvent we)
    {
    }
    public void windowDeiconified(WindowEvent e) 
    {
    }
    public void windowIconified(WindowEvent e) 
    {
    }
    public void windowOpened(WindowEvent e) 
    {
    }
    public void windowClosing(WindowEvent e) 
    {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() 
            {
                label.setText("JDialog is closed"); 
            }
        });
    }
    public static void main(String [] args)
    {   
        new A();
       
    }
}



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

PM   Вверх
BTR
Дата 15.3.2005, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



передавать в диалог я собираюсь толька JFrame(и никаких его потомков), прста я сделал это через свой интерфейс, но мне показалось это как то нескладно.
пока остановился на WindowStateListener
спасиба всем за науку :inlove

PM MAIL   Вверх
DarkDS
Дата 15.3.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По поводу передачи родителя чайлд диалогу - это я насчет примера djGri
PM MAIL   Вверх
djGri
Дата 15.3.2005, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(BTR @ 15.3.2005, 08:27)
передавать в диалог я собираюсь толька JFrame(и никаких его потомков), прста я сделал это через свой интерфейс, но мне показалось это как то нескладно.

Тогда ты не сможешь обращаться к своим функциям. Ты же хотел:
Цитата(BTR @ 14.3.2005, 16:28)
т.е. в диалоге заполняется форма, а после закритя диалога, в родительском фрейме нада обновить табилцу (или еще чтонить).


PM MAIL   Вверх
DarkDS
Дата 15.3.2005, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(djGri @ 15.3.2005, 17:05)
Тогда ты не сможешь обращаться к своим функциям.

Как раз сможет - ведь событие по закрытию диалога будет отловленно в самом фрейме. Вот фрейм и вызовет у себя нужные методы.
PM MAIL   Вверх
djGri
Дата 16.3.2005, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2 DarkDS

1. Имелось ввиду, что если передать просто JFrame, то JDialog не сможет вызвать функцию, скажем, updateTables(), которая есть в папаше ( myJFrame)

2.
Цитата(DarkDS @ 15.3.2005, 21:21)
Вот фрейм и вызовет у себя нужные методы.

А откуда же он возьмет данные, котоые ввел пользователь ?
PM MAIL   Вверх
Domestic Cat
Дата 16.3.2005, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата(djGri @ 15.3.2005, 22:54)
А откуда же он возьмет данные, котоые ввел пользователь ?


Из ссылки на диалог.


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

PM   Вверх
djGri
Дата 16.3.2005, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1.
Цитата(Domestic @ 16.3.2005, 07:24)
Из ссылки на диалог.

Это неудобно.

2. Обычно диалог закрывается, когда юзер ввел данные и нажал OK/Cancel, а не Х.

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.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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