Java: Как добавить KeyListener для JPanel?

Форум для программистов

Сообщение YuG » Ср июн 23, 2004 11:44 pm

Мне необходимо получать код нажатой клавиши для JPanel.
Как добавить слушателя нажатий клавиш для JPanel?
Нижеследующий код не работает... :(
Если на эту панель добавить JTextField и прописать
textField.addKeyListener(this); тогда всё работает, но мне
этого надо достичь только для одной панели...

Код: выделить все
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

/*
* Тестирование KeyListener
*/
public class KeyListenerTest extends JPanel implements KeyListener {

   /** нажатие кнопки */
   public void keyPressed(KeyEvent e) {
       System.out.println("keyPressed = " + e.getKeyCode());
   }
   public void keyReleased(KeyEvent e) {;}
   public void keyTyped(KeyEvent e) {;}

   /** конструктор */
   public KeyListenerTest() {
       super();
       setPreferredSize(new Dimension(100, 100));
       requestFocus();
   }

   public static void main(String args[]) {
       JFrame frame = new JFrame("KeyListenerTest");
       frame.addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });

       KeyListenerTest test = new KeyListenerTest();

       frame.getContentPane().add(test);
       frame.pack();
       frame.show();
   }

} //class
YuG
Подполковник
 
Сообщений: 588
Зарегистрирован: Пн ноя 24, 2003 11:00 am
Откуда: Теперь уже Москва
Пункты репутации: 0

Сообщение Mishail » Чт июн 24, 2004 2:43 am

2YuG
Здесь: <a href='http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html' target='_blank'>http://java.sun.com/docs/books/tutorial/ui...eylistener.html</a>
смотрел?

с таким конструктором работает:
Код: выделить все
  public KeyListenerTest() {
      super();
      setPreferredSize(new Dimension(100, 100));
      setFocusable(true); <----- This
      requestFocus();
      addKeyListener(this); <------ This
  }
Последний раз редактировалось Mishail Чт июн 24, 2004 3:01 am, всего редактировалось 1 раз.
<a href="http://www.foobar2000.ru/" target="_blank">Изображение</a>| <!--coloro:#009900--><span style="color:#009900"><!--/coloro--><a href="http://irc.run.net/Pix/ircmap.txt" target="_blank">RUSNet:</a> #miranda #foobar2000 #mozilla<!--colorc--></span><!--/colorc-->
Mishail
Полковник
 
Сообщений: 1196
Зарегистрирован: Ср апр 03, 2002 9:30 pm
Откуда: Владивосток
Пункты репутации: 0

Сообщение YuG » Пт июн 25, 2004 4:31 pm

2Mishail
Странно, у меня с таким конструктором не заработало...

setFocusable(true); <----- This
так ведь по умолчанию стоит true

addKeyListener(this); <------ This
согласен!

короче, мой рабочий вариант:
Код: выделить все
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

/*
* Тестирование KeyListener
*/
public class KeyListenerTest extends JPanel implements KeyListener {

   /** нажатие кнопки */
   public void keyPressed(KeyEvent e) {
       System.out.println("keyPressed = " + e.getKeyCode());
   }
   public void keyReleased(KeyEvent e) {;}
   public void keyTyped(KeyEvent e) {;}

   /** конструктор*/
   public KeyListenerTest() {
       super();
       setPreferredSize(new Dimension(100, 100));
       addKeyListener(this);
   }

   public static void main(String args[]) {
       JFrame frame = new JFrame("KeyListenerTest");
       frame.addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });

       KeyListenerTest test = new KeyListenerTest();

       frame.getContentPane().add(test);
       frame.pack();
       frame.show();
       test.requestFocus();  //************* !!!!!!!!!!!
   }

} //class
YuG
Подполковник
 
Сообщений: 588
Зарегистрирован: Пн ноя 24, 2003 11:00 am
Откуда: Теперь уже Москва
Пункты репутации: 0

Сообщение Mishail » Вс июн 27, 2004 10:38 pm

2YuG
Заработало - и слава Богу :)

<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->setFocusable(true); <----- This
так ведь по умолчанию стоит true<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
У меня без этой строчки не работало.

Кста, вопрос на последок. :) У тебя версия JSDK какая?
<a href="http://www.foobar2000.ru/" target="_blank">Изображение</a>| <!--coloro:#009900--><span style="color:#009900"><!--/coloro--><a href="http://irc.run.net/Pix/ircmap.txt" target="_blank">RUSNet:</a> #miranda #foobar2000 #mozilla<!--colorc--></span><!--/colorc-->
Mishail
Полковник
 
Сообщений: 1196
Зарегистрирован: Ср апр 03, 2002 9:30 pm
Откуда: Владивосток
Пункты репутации: 0

Сообщение YuG » Пн июн 28, 2004 6:38 am

2Mishail
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Кста, вопрос на последок. :) У тебя версия JSDK какая?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
у меня стоит:
j2sdk1.42,
jdk1.4,
jdk1.3,
jdk1.17,
реально пользуюсь только первыми тремя...

кстати,
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->addKeyListener(this); <------ This
согласен!<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->уже не согласен :)
YuG
Подполковник
 
Сообщений: 588
Зарегистрирован: Пн ноя 24, 2003 11:00 am
Откуда: Теперь уже Москва
Пункты репутации: 0

Сообщение Mishail » Пн июн 28, 2004 10:27 pm

2YuG
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->уже не согласен :) <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Какой твой вариант?
<a href="http://www.foobar2000.ru/" target="_blank">Изображение</a>| <!--coloro:#009900--><span style="color:#009900"><!--/coloro--><a href="http://irc.run.net/Pix/ircmap.txt" target="_blank">RUSNet:</a> #miranda #foobar2000 #mozilla<!--colorc--></span><!--/colorc-->
Mishail
Полковник
 
Сообщений: 1196
Зарегистрирован: Ср апр 03, 2002 9:30 pm
Откуда: Владивосток
Пункты репутации: 0

Сообщение YuG » Вт июн 29, 2004 6:42 am

2Mishail
Эта строчка лишняя, ведь сам класс implements KeyListener...
YuG
Подполковник
 
Сообщений: 588
Зарегистрирован: Пн ноя 24, 2003 11:00 am
Откуда: Теперь уже Москва
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron