Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / KeyListener / 11 сообщений из 11, страница 1 из 1
24.06.2007, 19:22:46
    #34615996
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
не могу понять почему данный кусок кода выдает ошибку при компиляции
может я пытаюсь назначить неверного слушателя ??


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
 import  java.awt.BorderLayout;
 import  java.awt.event.KeyEvent;
 import  java.awt.event.KeyListener;

 import  javax.swing.JFrame;
 import  javax.swing.JTextArea;


 public   class  test6 {
     public  JTextArea entText =   new  JTextArea( "",  1 ,  25 );
     public  JFrame wnd =   new  JFrame();
    
////////
     class  klst  implements  KeyListener{
  	   public   void  keyPressed(KeyEvent e)
  	   {
  		   int  key = e.getKeyCode(); 
  		   if  ( key ==  13 )
  		  {			  
  			  
  		  }
  	   
  	   }
  	  public   void  keyTyped(KeyEvent e)
  		   {		 
  		   }
  	  
  	   public   void  keyReleased(KeyEvent e)
  	   {
  	   }
  	 
  }
    
//////////    
    test6()
    {
    	wnd.add( BorderLayout.CENTER, entText);
    	entText.addKeyListener( klst);
    }
    

	/**
	 * @param args
	 */
	 public   static   void  main(String[] args) {
		// TODO Auto-generated method stub
		    test6 app =   new  test6();
		    app.wnd.setVisible( true);
		    
	}

}

-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
24.06.2007, 19:25:01
    #34616000
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
цель данного кода перехватить нажатие Enter
если не трудно скажите может есть более простые способы это сделать..
-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
24.06.2007, 22:41:57
    #34616172
Interrupt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
Хех, ну и ошибка, в блокноте пишем?)) :
Код: plaintext
entText.addKeyListener( klst);
Во-первых, все-таки, следает создать сначала именно объект класса, а потом уже пытаться его повесить в слушатели ;)
Код: plaintext
entText.addKeyListener( new  klst());

Во-вторых, ловля "Enter":
Код: plaintext
1.
2.
3.
 if  ( key == KeyEvent.VK_ENTER)
{
                
}
Ну и в-третьих, из-за ловли нажатия создавать целый класс слишком жирно, я бы сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 public   class  Test6 {
     public  JTextArea entText =  new  JTextArea("",  1 ,  25 );
     public  JFrame wnd =  new  JFrame();

     public  Test6() {
        wnd.add(BorderLayout.CENTER, entText);
        entText.addKeyListener( new  KeyAdapter() {
             public   void  keyPressed(KeyEvent e) {

                 int  key = e.getKeyCode();
                 if  (key == KeyEvent.VK_ENTER) {
                    System.out.println("ad");
                    //твои действия
                }

            }
        });
    }

    /**
     * @param args
     */
     public   static   void  main(String[] args) {
        // TODO Auto-generated method stub
        Test6 app =  new  Test6();
        app.wnd.pack();
        app.wnd.setVisible(true);

    }

}

p.s. Кстати, классы следует называть с Большой буквы.
...
Рейтинг: 0 / 0
24.06.2007, 23:17:55
    #34616190
Interrupt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
Просмотрел код более внимательно -> еще нашел ошибки. Вообщем автору следует отправиться к азам и начать с изучения области видимости переменных, правил их обозначения и доступа к ним.

Переписал код заново, уж слишком много исправлений вышло.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
 import  java.awt.BorderLayout;
 import  java.awt.event.KeyEvent;
 import  java.awt.event.KeyAdapter;

 import  javax.swing.*;


 public   class  Test6  extends  JFrame{
     private  JTextArea entText =  new  JTextArea("",  4 ,  25 );

     public  Test6() {
        getContentPane().setLayout( new  BorderLayout());
        add(BorderLayout.CENTER, entText);
        entText.addKeyListener( new  KeyAdapter() {
             public   void  keyPressed(KeyEvent e) {

                 int  key = e.getKeyCode();
                 if  (key == KeyEvent.VK_ENTER) {
                    //твои действия
                }

            }
        });
    }

     public   static   void  main(String[] args) {
        Test6 app =  new  Test6();
        app.pack();
        app.setVisible(true);

    }

}
...
Рейтинг: 0 / 0
25.06.2007, 20:44:27
    #34618699
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
to Interrupt :
спасибо за совет и подсказку
на счет привязки слушателя к еще не созданному объекту - тут действительно ступил... не досмотрел, а на счет остального ( название классов с большой буквы и == ) ты был прав
мой опыт написания программ на яве 2 недели = учусь.

-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
25.06.2007, 21:34:34
    #34618736
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
по поводу последнего написанного тобой кода сразу же возник вопрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
  import  java.awt.BorderLayout;
 import  java.awt.event.KeyEvent;
 import  java.awt.event.KeyAdapter;

 import  javax.swing.*;


 public   class  Test6  extends  JFrame{
     private  JTextArea entText =  new  JTextArea("",  4 ,  25 );

     public  Test6() {
        getContentPane().setLayout( new  BorderLayout());
        add(BorderLayout.CENTER, entText);
        entText.addKeyListener( new  KeyAdapter() {
             public   void  keyPressed(KeyEvent e) {

                 int  key = e.getKeyCode();
                 if  (key == KeyEvent.VK_ENTER) {
                    // тут у меня и появился 
                    //вопрос допустим я хочу поменять заголовок у окна
// пытаюсь вызвать метод setTitle( entText.getText());
// все работает, но при попытке вызова this.setTitle( entText.getText());
//выдает ошибку, на сколько я помню ( из "думая в яве" брюс эккель)
// вызов метода без указания имени класса осуществляется с помощью this
// в моем случае он опускается , но подразумевается [this].setTitle( entText.getText());
// на мой взгляд ошибка выдается из-за того что this указывает на какой-то другой объект

Вопрос: на какой объект указывает  this  ???
                    
                }

            }
        });
    }

     public   static   void  main(String[] args) {
        Test6 app =  new  Test6();
        app.pack();
        app.setVisible(true);

    }

}
-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
26.06.2007, 07:06:45
    #34618944
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
В данном случае this это анонимный класс потомок KeyAdapter.
Используйте явное указание класса Test6.this
...
Рейтинг: 0 / 0
26.06.2007, 09:17:42
    #34619054
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
to fixxer
спасибо за ответ
и последний вопрос: как осуществить "перехват"
нажания сочетания клавиш пример Снтрл+Ентер ??

-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
26.06.2007, 09:41:04
    #34619102
joybell0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
InterruptНу и в-третьих, из-за ловли нажатия создавать целый класс слишком жирно , я бы сделал так:

Немного позанудствую :) Не сомневаюсь, что ты это прекрасно знаешь, но все же не будем вводить новичка в заблуждение. ;)
В приведенном тобой коде также создается новый класс. Вот в этом фрагменте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
entText.addKeyListener( new  KeyAdapter() {
            @Override //тоже, кстати лишним не будет
             public   void  keyPressed(KeyEvent e) {
                 int  key = e.getKeyCode();
                 if  (key == KeyEvent.VK_ENTER) {
                    System.out.println("ad");
                    //твои действия
                }
            }
        });
Но это класс без имени, так называемый анонимный класс , который здесь является наследником KeyAdapter, и переопределяет метод keyPressed(KeyEvent e).
...
Рейтинг: 0 / 0
26.06.2007, 10:01:01
    #34619149
Interrupt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
-Sergey-Вопрос: на какой объект указывает this ???
Код: plaintext
 this .getClass()
всегда ответит на этот вопрос :)
-Sergey-и последний вопрос: как осуществить "перехват"
нажания сочетания клавиш пример Снтрл+Ентер ??

Код: plaintext
1.
2.
 if  (key == KeyEvent.VK_ENTER && e.isControlDown()) {
                    
}
...
Рейтинг: 0 / 0
26.06.2007, 10:36:19
    #34619244
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KeyListener
joybell0 InterruptНу и в-третьих, из-за ловли нажатия создавать целый класс слишком жирно , я бы сделал так:

Немного позанудствую :) Не сомневаюсь, что ты это прекрасно знаешь, но все же не будем вводить новичка в заблуждение. ;)
В приведенном тобой коде также создается новый класс. Вот в этом фрагменте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
entText.addKeyListener( new  KeyAdapter() {
            @Override //тоже, кстати лишним не будет
             public   void  keyPressed(KeyEvent e) {
                 int  key = e.getKeyCode();
                 if  (key == KeyEvent.VK_ENTER) {
                    System.out.println("ad");
                    //твои действия
                }
            }
        });
Но это класс без имени, так называемый анонимный класс , который здесь является наследником KeyAdapter, и переопределяет метод keyPressed(KeyEvent e).


на счет того что при привязке был создан безымянный класс я был в курсе, но все равно
спасибо.
/*
Есть слушатели которые реализуют интерфейс( class KL implements KeyListener )
и есть заместители слушателей ( KeyAdapter() ) различие в том, что в первом случае
надо описать(реализовать) все методы, а во втором только один(необходимый).
*/

опять вопрос: @Override что это есть ?
дирректива интерпритатору ?
и когда следует использовать ?
прошу простить мою дремучесть..
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / KeyListener / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]