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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Событие на keyPressed... Событие на keyPressed... 
:(
    Опции темы
Гость_MAVr
Дата 13.6.2005, 17:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Запускаю... ggg и mmm - пишет ))
А вот на нажатие на F10 не реагирует ((
Где может быть ошибка?


Код

public class MyKeyListener extends KeyAdapter {
  
  public MyKeyListener() {
    System.out.println("ggg");
    hhh();
 }


 public void hhh() {
    System.out.println("mmmm");
    }
  
  public void keyPressed(KeyEvent evt) {
     if (evt.getKeyCode() == evt.VK_F10) {
      System.out.println("F10 pressed");
    }
  }
  
  public void main() {
  new MyKeyListener();
}

  Вверх
Domestic Cat
Дата 13.6.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Попробуй посмотреть какой код на самом деле при нажатии этой клавиши
Код

 public void keyPressed(KeyEvent evt) {
System.out.println(evt.getKeyCode() + ", expecting " +  evt.VK_F10);
if (evt.getKeyCode() == evt.VK_F10) {
System.out.println("F10 pressed");
}
}

И пользуйся тегами [cоde] пожалуйста.


--------------------

PM   Вверх
Гость_MAVr
Дата 13.6.2005, 19:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2 Domestic Cat: Хорошо, буду внимательней...

... Проблема в том что прогрмма не заходит в keyPressed при нажатии на клавиши... Как это исправить?
  Вверх
Domestic Cat
Дата 13.6.2005, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Это значит что тот компонент, на который ты вешаешь листенер, не имеет фокуса. Лучше тогда весь код запости


--------------------

PM   Вверх
batigoal
Дата 13.6.2005, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

Репутация: 7
Всего: 151



Может быть, просто не зарегистрирован блок прослушивания для компонента?

Это сообщение отредактировал(а) Lamer George - 13.6.2005, 21:31


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Guest
Дата 13.6.2005, 21:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

package alex;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Frame1 extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  HelloDate d = new HelloDate();
  WhileTest W = new WhileTest();
  JButton jButton1 = new JButton();
  MyKeyListener fff = new MyKeyListener();

  //Construct the frame
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();

    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }


/*  void contentPane_keyPressed(KeyEvent e) {
      int key = e.getKeyCode();
     if (key == KeyEvent.VK_F10) {
       Toolkit.getDefaultToolkit().beep();
       System.out.println("F10 pressed");
     }
      requestFocus();
   }*/

 //    if(e.getKeyCode() == KeyEvent.VK_ENTER)System.out.print("Oops");
   // }


  public void paint(Graphics g){
    {}
  }


  //Component initialization
  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    jButton1.setAlignmentY((float) 0.0);
    jButton1.setMaximumSize(new Dimension(7, 25));
    jButton1.setMinimumSize(new Dimension(73, 25));
    jButton1.setMnemonic('0');
    jButton1.setText("jButton1");
    contentPane.setLayout(borderLayout1);
    this.setSize(new Dimension(400, 300));
    this.setTitle("Frame Title");
    contentPane.add(jButton1,  BorderLayout.NORTH);

  }

  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

public class MyKeyListener extends KeyAdapter implements KeyListener {

  public MyKeyListener() {
    System.out.println("ggg");
    hhh();
}


 public void hhh() {
    System.out.println("mmmm");
    }

  public void keyPressed(KeyEvent evt) {
     System.out.println(evt.getKeyCode() + ", expecting " +  evt.VK_F10);
     if (evt.getKeyCode() == evt.VK_F10) {
      System.out.println("F10 pressed");
    }
  }

  public void main() {
  new MyKeyListener();
  }

}

}



Вроде бы правильно, Java не ругается... Но куда его ставить что б реагировало на нажатие клавиш? (

Код

/*  
  contentPane.addKeyListener
 (new KeyAdapter() {
   public void keyPressed(KeyEvent e) {
     int key = e.getKeyCode();
     if (key == KeyEvent.VK_F10) {
        Toolkit.getDefaultToolkit().beep();  
        System.out.println("F10");
     }
   }
 }
);
*/

  Вверх
batigoal
Дата 13.6.2005, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

Репутация: 7
Всего: 151



Гм. Какой-то навороченный код. Видимо, сгенеренный какой-то средой (подозреваю, JDeveloper). Не было времени копаться, посмотри сам - вот этот код нормально отлавливает F10:
Код

import java.awt.event.*;
import javax.swing.*;

public class Frame1 extends JFrame {
    public static void main(String[] args) {
        JFrame fr = new JFrame();
        fr.addKeyListener(new MyKeyListener());
        fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        fr.setSize(200,200);
        fr.show();
    }
}

class MyKeyListener extends KeyAdapter {
    public void keyPressed(KeyEvent evt) {
        System.out.println(evt.getKeyCode() + ", expecting " + evt.VK_F10);
        if (evt.getKeyCode() == evt.VK_F10) {
            System.out.println("F10 pressed");
        }
    }
}

Добавлено @ 22:22
Пара замечаний насчет твоего кода:
1. Ты вообще не отображаешь свой фрейм.
2. На фрейме нужно зарегистрировать лисенер. Просто new MyKeyListener() - это вхолостую.
3. Видимо, вместо public void main() ты хотел использовать
Код

public static void main(String[] args)

4. Строка
Код

public class MyKeyListener extends KeyAdapter implements KeyListener

избыточна. Если твой класс extends KeyAdapter, он автоматом implements KeyListener.

А вообще, рекомендую почитать общую теорию по этому вопросу. Всего одна глава из Эккеля или Ноутона - и многие глупые ошибки пропадут сами собой smile

Это сообщение отредактировал(а) Lamer George - 13.6.2005, 22:26


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Гость_MAVr
Дата 14.6.2005, 00:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Задача решена.
Всем спасибо...

2 Lamer George: Это JBuilder... Эккеля книга тоже есть, и в нее поглядываю.
Но как у каждого новичка, возникают вопросы...


Код

package untitled1;

import java.awt.event.*;
import javax.swing.*;

public class Frame1 extends JFrame 
{    
}

class MyKeyListener extends KeyAdapter {
   
  public void keyPressed(KeyEvent evt) {
        System.out.println(evt.getKeyCode() + ", expecting " + evt.VK_F10);
        if (evt.getKeyCode() == evt.VK_F10) {
            System.out.println("F10 pressed");
        }
    }
}



Код

package untitled1;

import javax.swing.UIManager;
import java.awt.*;

public class Application1 {
  boolean packFrame = false;

  //Construct the application
  public Application1() {
    Frame1 frame = new Frame1();
    frame.addKeyListener(new MyKeyListener());
    //Validate frames that have preset sizes
    //Pack frames that have useful preferred size info, e.g. from their layout
    if (packFrame) {
      frame.pack();
    }
    else {
      frame.validate();
    }
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }

  //Main method
  public static void main(String[] args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    new Application1();
  }
}

  Вверх
Hidrag
Дата 29.1.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Такой вопрос: есть форма, на ней панель, несколько радиокнопок и кнопка...
мне нужно обработать реакцию на нажатие кнопок на клаве, пишу в нетбинсе используя его гуи редактор. В приложение работает реакция на мышь, а вот реакцию на клавиатуру не получается сделать, делаю так: нетбинс добавляет листенера и дает мне метод в котором я пишу обработчик, написал так:
Код

private void formKeyPressed(java.awt.event.KeyEvent evt) {
  if (evt.getKeyCode()==evt.VK_0) System.out.println("pressed 0");
  else System.out.println("nifiga ne 0");
}


запускаю, жиму на кнопки а в консоль ничего не идет, обработчики мыши работают а клавы нет... где может быть проблема/ошибка?

Добавлено @ 11:47 
как мне кажется ошибка в том что фокус имеет не форма а другой контрол... неужели для всех контролов обработчики писать...


--------------------
user posted image
PM WWW ICQ   Вверх
LSD
Дата 29.1.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Код
component.registerKeyboardAction(actionListener, 
                                 KeyStroke.getKeyStroke(KeyEvent.VK_0, 0), 
                                 JComponent.WHEN_IN_FOCUSED_WINDOW);



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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