powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / KeyListener
11 сообщений из 11, страница 1 из 1
KeyListener
    #34615996
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не могу понять почему данный кусок кода выдает ошибку при компиляции
может я пытаюсь назначить неверного слушателя ??


Код: 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
KeyListener
    #34616000
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
цель данного кода перехватить нажатие Enter
если не трудно скажите может есть более простые способы это сделать..
-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
KeyListener
    #34616172
Interrupt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хех, ну и ошибка, в блокноте пишем?)) :
Код: 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
KeyListener
    #34616190
Interrupt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просмотрел код более внимательно -> еще нашел ошибки. Вообщем автору следует отправиться к азам и начать с изучения области видимости переменных, правил их обозначения и доступа к ним.

Переписал код заново, уж слишком много исправлений вышло.
Код: 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
KeyListener
    #34618699
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Interrupt :
спасибо за совет и подсказку
на счет привязки слушателя к еще не созданному объекту - тут действительно ступил... не досмотрел, а на счет остального ( название классов с большой буквы и == ) ты был прав
мой опыт написания программ на яве 2 недели = учусь.

-

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

Код: 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
KeyListener
    #34618944
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном случае this это анонимный класс потомок KeyAdapter.
Используйте явное указание класса Test6.this
...
Рейтинг: 0 / 0
KeyListener
    #34619054
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to fixxer
спасибо за ответ
и последний вопрос: как осуществить "перехват"
нажания сочетания клавиш пример Снтрл+Ентер ??

-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
KeyListener
    #34619102
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).
...
Рейтинг: 0 / 0
KeyListener
    #34619149
Interrupt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Sergey-Вопрос: на какой объект указывает this ???
Код: plaintext
 this .getClass()
всегда ответит на этот вопрос :)
-Sergey-и последний вопрос: как осуществить "перехват"
нажания сочетания клавиш пример Снтрл+Ентер ??

Код: plaintext
1.
2.
 if  (key == KeyEvent.VK_ENTER && e.isControlDown()) {
                    
}
...
Рейтинг: 0 / 0
KeyListener
    #34619244
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / KeyListener
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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