Я пишу приложение, но я нашел проблему в системе регистрации событий. Кажется, что при вводе текста на клавиатуре и нажатии левой кнопки мыши окно не регистрирует нажатие мыши. Но когда я нажимаю правую кнопку мыши, набрав на клавиатуре, она фактически регистрируется.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-> Мышь и сенсорная панель, которая контролирует задержку регистрации кликов или перемещая мышь после ввода.
Ваши оба условия одинаковы: нажмите во время набора текста. во всяком случае, FYI, ваш код работает со мной. – Thrasher
Простите, что вы имеете в виду под этим? Он не объясняет, почему кнопка мыши 3 регистрируется, но кнопка 1 мыши - нет. –
Я имею в виду, что это работает для меня. Может быть конфигурация уровня S.O? (нажмите «Отключить» при вводе или что-то еще?) – Thrasher