Swing & JavaFX: как конвертировать JavaFX MouseEvent в Swing MouseEvent? - PullRequest
0 голосов
/ 08 апреля 2020

Пакет SwingUtilities имеет замечательную функцию convertMouseEvent для преобразования события мыши в компоненте в событие мыши в другом компоненте:

MouseEvent convertedEvent = SwingUtilities.convertMouseEvent(originalComponent, event, otherComponent);

Между тем, MouseEvent в JavaFX есть метод copyFor для создания копии MouseEvent для другого компонента:

MouseEvent convertedEvent = e.copyFor(e.getSource(), otherComponent);

Я хотел бы сделать нечто подобное, чтобы преобразовать JavaFx MouseEvent e в событие мыши Swing.

Я не смог найти запеченную функцию, поэтому я попытался написать свою собственную. Однако есть два поля, которые я не могу легко конвертировать:

  • Поле идентификатора, которое идентифицирует событие. Я предполагаю, что мне придется вручную конвертировать из e.getEventType().getEventType().getName()
  • В JavaFX нет свойства «когда», указывающего, когда произошло событие. Кажется, я мог бы использовать текущее системное время здесь
  • Модификатор события мыши. Я не уверен, как построить их из свойств события JavaFX

Есть ли способ получить модификатор из свойств e?

1 Ответ

0 голосов
/ 12 апреля 2020

Функции в SwingEvents могут быть полезны. Доступ к ним можно получить с помощью импорта

import com.sun.javafx.embed.swing.SwingEvents;

Для преобразования из JavaFX в Swing:

SwingEvents.fxMouseButtonToMouseButton(fxEvent): преобразование события JavaFX в кнопка мыши Swing.

SwingEvents.fxMouseEventTypeToMouseID(fxEvent): преобразует событие JavaFX в идентификатор мыши Swing.

SwingEvents.fxMouseModsToMouseMods(fxEvent): преобразует событие JavaFX в моды Swing.

Преобразование из Swing в JavaFX:

SwingEvents.mouseIDToEmbedMouseType(swingEvent.getID()): преобразование идентификатора события мыши Swing в JavaFX MouseType.

SwingEvents.mouseButtonToEmbedMouseButton(swingEvent.getButton, swingEvent.getModifiersEx()): преобразование кнопки мыши Swing в Кнопка мыши JavaFX. В настоящее время прослушивается (JDK-8242419).

...