mouseEntered无法捕捉快速鼠标移动

时间:2017-07-14 19:27:23

标签: java swing mouseevent mouse

我有一个JToggleButtons数组,可以创建各种日历选择器。我已经实现了一种方法,将鼠标拖到按钮上以切换多天,而不必停下来并单击每一个,这对于较慢的鼠标移动非常有用:

JToggleButton[] buttons = getCalendarDayButtonArray(); //arbitrary instantiation
for (int d = 0; d < 31; d++) {
  final JToggleButton b = new JToggleButton(day);
  buttons[d] = b;
  buttons[d].addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {//do stuff...}
  }

  buttons[d].addMouseListener(new MouseAdapter() {
    public void mouseEntered(MouseEvent e) {
      if (e.getModifiers() == MouseEvent.BUTTON1_MASK) {
        b.doClick();
      }
    }

    public void mousePressed(MouseEvent e) {
      if (e.getModifiers() == MouseEvent.BUTTON1_MASK) {
        b.doClick();
      }
    }
  });

}

然而,这并不完全适用于快速移动。我不确定鼠标的轮询速率是否有问题,或计算机本身是否有任何延迟,但似乎鼠标完全跳过某些按钮,因此mouseEntered方法不会为这些按钮调用。是否存在一种不涉及用户只需慢慢移动鼠标的解决方法?提前谢谢!

0 个答案:

没有答案