2016-12-19 5 views
0

Я пишу приложение, но я нашел проблему в системе регистрации событий. Кажется, что при вводе текста на клавиатуре и нажатии левой кнопки мыши окно не регистрирует нажатие мыши. Но когда я нажимаю правую кнопку мыши, набрав на клавиатуре, она фактически регистрируется.Java-слушатели - мышь слева не нажата при вводе

Чтобы несколько обобщать код:

import java.awt.Dimension; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.event.MouseMotionListener; 
import javax.swing.JFrame; 

public class BasicEventTest implements KeyListener, MouseListener, MouseMotionListener { 

    JFrame frame; 

    /*********************************************** INPUT HANDLING ***********/ 
    public void keyPressed(KeyEvent k) { 
     System.out.println(k.getKeyCode()); 
    } 
    public void keyReleased(KeyEvent k) {} 
    public void keyTyped(KeyEvent k) {} 

    public void mousePressed(MouseEvent m) { 
     System.out.println("MOUSEPRESS " + m.getButton()); 
    } 
    public void mouseReleased(MouseEvent m) {} 
    public void mouseMoved(MouseEvent m) {} 
    public void mouseDragged(MouseEvent m) {} 
    public void mouseEntered(MouseEvent m) {} 
    public void mouseExited(MouseEvent m) {} 
    public void mouseClicked(MouseEvent m) {} 

    /**************************************************** CONSTRUCTOR *********/ 
    public BasicEventTest() { 
     frame = new JFrame("BasicEventTest"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setPreferredSize(new Dimension(640, 480)); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setResizable(false); 
     frame.setVisible(true); 
     frame.createBufferStrategy(2); 
     frame.setIgnoreRepaint(true); 

     frame.addKeyListener(this); 
     frame.addMouseListener(this); 
     frame.addMouseMotionListener(this); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     BasicEventTest test = new BasicEventTest(); 
    } 
} 

РЕШИТЬ: Видимо в Windows 10, есть установка в ПК Настройки-> ПК и Devices-> Мышь и сенсорная панель, которая контролирует задержку регистрации кликов или перемещая мышь после ввода.

+0

Ваши оба условия одинаковы: нажмите во время набора текста. во всяком случае, FYI, ваш код работает со мной. – Thrasher

+0

Простите, что вы имеете в виду под этим? Он не объясняет, почему кнопка мыши 3 регистрируется, но кнопка 1 мыши - нет. –

+0

Я имею в виду, что это работает для меня. Может быть конфигурация уровня S.O? (нажмите «Отключить» при вводе или что-то еще?) – Thrasher

ответ

0

Ответ на комментарии:

Поскольку код работает, как ожидалось, вы, вероятно, следует проверить конфигурации на уровне кого-н