2016-02-11 3 views
1

Как реализовать dbl Нажмите на javafx?Как реализовать масштабирование по двойному клику в javafx?

У меня есть сцена (со многими компонентами), и я хочу, чтобы она была перетаскиваемой, а также двойным кликом для увеличения. Как я могу достичь этого динамического поведения? Я использовал данное решение, но они не полезны. Когда я перетаскиваю два раза, вы получаете триггеры события двойного щелчка. Этого я не хочу.

Немного примера кода будет оценен.

+0

@Adam Проблема связана с выпуском мыши, которая называется в обеих ситуациях. Итак, как определить в выпуске, что он дважды щелкнул выпущенную или выпущенную с одним щелчком. –

+0

Вы пробовали проверить, является ли событие мыши событием DRAG_DETECTED, прежде чем проверять двойной щелчок? – Miles

+0

@Miles кажется, что я работаю, я обновляю окончательный код после его завершения. –

ответ

0

Вы можете добавить время ожидания, прежде чем начнется перетаскивание одного клика.

  • Boolean, которое определяет, если двойной щелчок произошел

  • На перетащить/падение: установить логический ложные

  • На перетащить/падение: ждать специфицированные миллисекунд перед проверкой булевых
  • на сопротивление/drop: проверьте, является ли логическое значение false -> continue

  • Двойной щелчок: установить логическое значение true

Это должно работать?

Edit: На перетащить/падение: ждать специфицированные миллисекунд перед проверкой булева - То есть в основном задержка, что вы определяете, как двойной щелчок по-прежнему является двойным щелчком, а не два отдельных щелчков

Edit2: комментарий Mile к вопрос, пожалуй, лучший способ пойти в этом случае.

+0

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

0

Попробуйте этот код для двойного щелчка.

myPane.setOnMouseClicked(new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent mouseEvent) { 
      if(mouseEvent.getButton().equals(MouseButton.PRIMARY)){ 
       if(mouseEvent.getClickCount() == 2){ 
        //Write zooming logic here. 
       } 
      } 
     } 
    }); 

Я надеюсь, что это вам поможет.

Смежные вопросы