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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> при изменении JTextField произвести ресет значения, как филд передать в конструктор листнера 
V
    Опции темы
alex_smirnov
Дата 3.7.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Структура программки следующая:

Код

public class MYJT extends JApplet{

   ....

   public void start(){
       JTextField searchF = new JTextField(8);
       searchF.getDocument().addDocumentListener(new mySearchFieldListener());
   }

   public class mySearchFieldListener implements DocumentListener {
         
     public void changedUpdate(DocumentEvent e){}
     public void insertUpdate(DocumentEvent e){
         System.out.println(e.getClass());
        }
        public void removeUpdate(DocumentEvent e){}
   }
}


Вобщем такая тема: надо при изменении поля изменять значение searchF..., если бы граф. компонента была глобальная, то это просто, но как мне передать в конструктор локальную нового листнера переменную?

Спасибо.
PM GTalk Jabber   Вверх
powerOn
Дата 3.7.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(alex_smirnov @  3.7.2007,  12:58 Найти цитируемый пост)
но как мне передать в конструктор локальную нового листнера переменную?


Если 2 способа, красивый и не очень:
1) Пусть Applet реализует DocumentListener. (это не очень красивый).
2) Делегируй обработку метода слушателя Applet-у:

Код

import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class NewJApplet extends javax.swing.JApplet
{
    private javax.swing.JTextField jTextField1;

    public void init()
    {
        try
        {
            java.awt.EventQueue.invokeAndWait(new Runnable()
            {
                public void run()
                {
                    initComponents();
                    jTextField1.getDocument().addDocumentListener(new MySearchFieldListener());
                }
            });
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
                       
    private void initComponents()
    {
        jTextField1 = new javax.swing.JTextField();

        getContentPane().setLayout(new java.awt.FlowLayout());

        jTextField1.setText("jTextField1");
        getContentPane().add(jTextField1);

    }                       
    
    class MySearchFieldListener implements DocumentListener
    {
        public void insertUpdate(DocumentEvent e)
        {
            // Делегируем метод классу апплета.
            NewJApplet.this.insertUpdate(e);
        }
        
        public void removeUpdate(DocumentEvent e)
        {
            // Делегируем метод классу апплета. 
            NewJApplet.this.removeUpdate(e);
        }
        
        public void changedUpdate(DocumentEvent e)
        {
            // Делегируем метод классу апплета. 
            NewJApplet.this.changedUpdate(e);
        }
    }
    
    // Далее идут реализации обработчиков событий.

    public void insertUpdate(DocumentEvent e)
    {
        System.out.println("insertUpdate");
    }
    
    public void removeUpdate(DocumentEvent e)
    {
        System.out.println("removeUpdate");
    }
    
    public void changedUpdate(DocumentEvent e)
    {
        System.out.println("changedUpdate");
    }
}




--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
alex_smirnov
Дата 3.7.2007, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Действительно красиво, но это не тоже самое, если делать через глобальную переменную?

Код

public class MYJT extends JApplet{

   ....
   JTextField searchF = new JTextField(8);
   ....

   public void start(){
       searchF.getDocument().addDocumentListener(new mySearchFieldListener());
   }
   public class mySearchFieldListener implements DocumentListener {
         
     public void changedUpdate(DocumentEvent e){}
     public void insertUpdate(DocumentEvent e){
         System.out.println(searchF.getText());
     }
     public void removeUpdate(DocumentEvent e){}
   }
}


Я хочу именно searchF (его - то я и назвал локальным) передавать в листнер... без использования глобальных переменных.

Хотя, может, я чего-то недопонимаю... объясните?
PM GTalk Jabber   Вверх
fixxer
Дата 3.7.2007, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А "оно само" не передается случаем в EventObject#getSource() ?


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


Бывалый
*


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

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



Документный ивент e таким методом не обладает..., если ты об этом. Хотя, опять же, я чего - то могу не допонимать)))

Это сообщение отредактировал(а) alex_smirnov - 3.7.2007, 13:44
PM GTalk Jabber   Вверх
alex_smirnov
Дата 3.7.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем спасибо, разобрался!
PM GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0678 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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