2015-11-05 2 views
0

Так что я хочу сделать это после того, как один клик удерживает метод mousePressed включенным, даже если он не держит его сам. Тогда за другим нажмите получится его «выключено»Держите mousePressed активным после одного щелчка

addMouseListener(new MouseAdapter() { 
     public void mousePressed(MouseEvent e) { 
      // save coord x,y when mouse is pressed 
      oldX = e.getX(); 
      oldY = e.getY(); 
     } 
    }); 

    addMouseMotionListener(new MouseMotionAdapter() { 
     public void mouseDragged(MouseEvent e) { 

      // coord x,y when drag mouse 
      currentX = e.getX(); 
      currentY = e.getY(); 

      if (g2 != null) { 
       // draw oval if g2 context not null 
       g2.drawOval(oldX, oldY, width, height); 
       g2.fillOval(oldX, oldY, width, height); 

       // refresh draw area to repaint 
       repaint(); 

       // store current coords x,y as olds x,y 
       oldX = currentX; 
       oldY = currentY; 
      } 
     } 
    }); 
+0

использовать логическое поле..по понимать, если оно было выбито не ... –

+0

Установите логический флаг (или отслеживайте количество кликов и используйте модульную математику) и следите за событием mouseMoved – MadProgrammer

ответ

1
  1. Ручка mousePressed() событие. Затем сохраните переменную в своем классе (скажем, «clickCounter»), которую вы увеличиваете каждый раз при создании события.

  2. Затем вам нужно будет обработать событие mouseMoved(), чтобы узнать, когда движется мышь.

Так что теперь ваша логика в mouseMoved() случае можно проверить, если переменная является нечетным, которая бы указывала мышь только что была нажата:

if (clickCounter % 2 == 1) 
{ 
    add your logic here 
} 

Или вы могли бы сохранить логическую переменную, что вы переключения off/on для каждого щелчка мышью.