Я разрабатываю проект javafx, и мне нужно что-то похожее на нажатие и удержание сенсорного события, но мне оно нужно как событие мыши, потому что у меня возникают проблемы с Linux и javafx, и я пробовал события касания, но Ubuntu выиграл Не реагируйте на события касания. Итак, какие-либо идеи о том, как достичь события или как активировать сенсорное событие javafx на Linux?Как достичь события мыши javafx «нажмите и удерживайте»?
ответ
Просто используйте PauseTransition
как таймер для «удержания». Запустите его, если мышь нажата, остановите ее, если она отпущена или перетащена.
import javafx.animation.PauseTransition;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class MousePressAndHoldTest extends Application {
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
addPressAndHoldHandler(root, Duration.seconds(1),
event -> System.out.println("Press and hold"));
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
private void addPressAndHoldHandler(Node node, Duration holdTime,
EventHandler<MouseEvent> handler) {
class Wrapper<T> { T content ; }
Wrapper<MouseEvent> eventWrapper = new Wrapper<>();
PauseTransition holdTimer = new PauseTransition(holdTime);
holdTimer.setOnFinished(event -> handler.handle(eventWrapper.content));
node.addEventHandler(MouseEvent.MOUSE_PRESSED, event -> {
eventWrapper.content = event ;
holdTimer.playFromStart();
});
node.addEventHandler(MouseEvent.MOUSE_RELEASED, event -> holdTimer.stop());
node.addEventHandler(MouseEvent.DRAG_DETECTED, event -> holdTimer.stop());
}
public static void main(String[] args) {
launch(args);
}
}
он работал как шарм. : D :-)^_^........... –
теперь у меня есть проблема, что у меня на том же узле есть обработчик события «dragdetected», и есть какая-то сложность, поэтому вырезание на погоню, когда таймер закончен (таймер в вашем коде), я хочу, чтобы приложение отпустило кнопку мыши, чтобы обработчик «dragdeteted» не работал. –
Я не могу видеть хороший способ сделать это - я думаю, вам просто нужно установить флаг в true, когда таймер закончится, сбросьте его на false в выведенном вами прослушивателе и проверите его при обнаружении вашего сопротивления, только действуя, если флаг является ложным. –
- 1. Мышь нажмите и удерживайте событие?
- 2. UIButton Нажмите и удерживайте
- 3. JQuery/Javascript Нажмите и удерживайте
- 4. Ошибка события мыши JavaFX
- 5. Нажмите и удерживайте нажатой кнопку мыши или щелкнув мышью
- 6. Повторить анимацию замерзать, когда левая кнопка мыши нажмите и удерживайте
- 7. Нажмите и удерживайте кнопку iOS
- 8. UITableView нажмите и удерживайте + перетаскивание
- 9. Нажмите и удерживайте событие Javascript
- 10. Нажмите и удерживайте визуальный намек
- 11. Нажмите и удерживайте OnMouseDown Unity3D
- 12. Нажмите и удерживайте (длинное нажатие)
- 13. Нажмите и удерживайте Аппаратные кнопки в Appium
- 14. D3 События мыши - Нажмите и DragEnd
- 15. Удалить обработчик события мыши JavaFX
- 16. Нажмите и удерживайте, чтобы узнать опцию
- 17. Нажмите и удерживайте кнопку «повторить огонь»
- 18. Разделительная одиночные щелчки от мыши и удерживайте
- 19. Javascript нажмите и удерживайте элемент, используя setTimeout
- 20. Настройка JavaFX Стиль кнопки на мыши Нажмите
- 21. Starling AS3 touch event нажмите и удерживайте
- 22. Sprite комплект нажмите и удерживайте с быстрым
- 23. Нажмите и удерживайте сохраненное изображение от UIWebView
- 24. Нажмите и удерживайте Listbox Windows Phone
- 25. «Нажмите и удерживайте» анимацию без NSTimer
- 26. Flash AS3 Нажмите и удерживайте кнопку
- 27. нажмите и удерживайте кнопку для удаления
- 28. «нажмите и удерживайте» с помощью WebDriver
- 29. IOS нажмите и удерживайте жест + коснитесь
- 30. Нажмите, удерживайте и отпустите на вид
Не нажимайте и не держите нажатие мыши без мыши? – MadProgrammer
Да, но мышь примет это как обнаруженное событие. –
Я не пробовал, но не было бы событием перетаскивания, только если мышь была перемещена ... что это было бы событием перетаскивания, но все-таки нужно было выпустить выпуск мыши ... возможно, что-то действительно пропало Очевидный – MadProgrammer