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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> диалог, получение данных из него 
V
    Опции темы
vicod
Дата 24.10.2007, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

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



   Как правильно реализовать получение каких-либо данных от диалога?
Т.е. после отработки каког-то диалога мне нужно получить результаты. Как это сделать наиболее правильно?
В моём случае, из главного фрейма вызывается диалог с полями ввода некоторых данных, у диалога есть ещё кнопочка "Ок".
я хочу чтобы при нажатии на кнопочку "Ок" диалог мой закрывался и выполнялся какой-то код у главного фрейма с использованием данных от диалога. 
   К классу своего диалога я добавил методы вида "getFieldValue1(), getFieldValue2()". Т.е впринципе из класса главного фрейма я их вызвать смогу, но надо как-то определить что диалог закрыли...В приложенни своём использую awt.
   Буду очень признателен за помощь smile 
PM MAIL   Вверх
_Y_
Дата 24.10.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Так ески диалог модальный, последующий за его открытием код (в том же потоке) выполняться не будет пока диалог не будет спрятан. Т.е. я делаю так:
        
Код

dial.setVisible(true);
//Здесь поток ждет пока сам диалог не сделает  this.setVisible(false);
//После чего извлекаются данные из диалога. Например:
String input1 = getFieldValue1();
int input2 = getFieldValue2();
//И только потом уже убиваю диалог        
inpDial = null;


Вроде работает, хотя может и есть методы красивее


Это сообщение отредактировал(а) _Y_ - 24.10.2007, 11:56


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
vicod
Дата 24.10.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

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



Цитата(_Y_ @ 24.10.2007,  11:55)

Код

//Здесь поток ждет пока сам диалог не сделает  this.setVisible(false);


а вот на этом можно чуть по-подробней? как "ждать"?smile 
я просто нюб и много чего ещё не знаю
 smile 

Это сообщение отредактировал(а) vicod - 24.10.2007, 12:42
PM MAIL   Вверх
AlexeyVorotnikov
Дата 24.10.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(vicod @  24.10.2007,  13:37 Найти цитируемый пост)
а вот на этом можно чуть по-подробней? как "ждать"?

В каком смысле "как"? Никак. Поток сам стоит и ждёт закрытия диалога.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
vicod
Дата 24.10.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

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



я хотел чтобы мне показали как закодить этот поток smile 
PM MAIL   Вверх
fixxer
Дата 24.10.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дял простых (да и не только) случаев можно использовать JOptionPane

Код

public class DialogTest {

    public static void main(String[] argc) {
        final JFrame frame = new JFrame("Dialog test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JLabel label = new JLabel("A test string");
        JButton button = new JButton(new AbstractAction("Edit") {

            public void actionPerformed(ActionEvent e) {
                EditPanel editPanel = new EditPanel();
                editPanel.setText(label.getText());
                if (JOptionPane.showConfirmDialog(frame, editPanel, "Edit text",
                        JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
                    label.setText(editPanel.getText());
                }
            }
        });
        frame.getContentPane().add(label);
        frame.getContentPane().add(button, BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);
    }

    private static class EditPanel extends JPanel {

        private JTextField field;

        public EditPanel() {
            super(new BorderLayout());
            field = new JTextField();
            
            add(field);
        }

        public String getText() {
            return field.getText();
        }

        public void setText(String value) {
            field.setText(value);
        }
    }
}



--------------------
user posted image
PM MAIL ICQ   Вверх
vicod
  Дата 24.10.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

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



сделал всё как тут http://forum.vingrad.ru/topic-109016/view-...t/p-834767.html
правда сначала не получалось, причина была в том что диалог был немодальным.
вообщем всем спасибо, темку можно закрывать
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.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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