Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

117
Visualizações
¿Cómo puedo usar la línea de tiempo para hacer doble clic en JavaFX?

Esto es lo que he hecho hasta ahora, funciona bien, pero cuando hago doble clic, se activa el evento de doble clic y se activa el evento de un solo clic, cuando hago un solo clic solo se activa el único clic, por supuesto.

 long currentMillis = System.currentTimeMillis(); addEventFilter(MouseEvent.MOUSE_CLICKED, e -> { long currentClickedMillis = System.currentTimeMillis(); long diffMillis = currentClickedMillis - currentMillis; currentMillis = currentClickedMillis; if (diffMillis > 500) { fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_CLICKED, this.aircraft)); } else { fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_DOUBLE_CLICKED, this.aircraft)); } });

¡Las otras soluciones en Stack Overflow no funcionan! Solo cuentan el número de clics y todavía tienen el mismo problema que tengo ahora.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Tuve el mismo problema una vez y tampoco pude encontrar la solución, así que tuve que desarrollar mi propia solución.
Para eso, utilicé la línea de Timeline de Javafx, que le dará la posibilidad de iniciar una línea de tiempo con su primer clic y, dependiendo de si luego hace un segundo clic o no, considerará que es un solo clic o un doble clic. , pero nunca los dos al mismo tiempo.
Aquí está mi solución:

 // initialize your timeline final Timeline clickTimeline = new Timeline(); // minimum duration of a double click 500ms Duration clickDuration = Duration.millis(500); KeyFrame clickKeyFrame = new KeyFrame(clickDuration); boolean isClickTimelinePlaying = false; clickTimeline.getKeyFrames().add(clickKeyFrame); addEventFilter(MouseEvent.MOUSE_CLICKED, e -> { if (isClickTimelinePlaying) { // when clicking the second time before the time line finishes isClickTimelinePlaying = false; fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_DOUBLE_CLICKED, this.aircraft)); clickTimeline.stop(); } else { // when clicking for the first time isClickTimelinePlaying = true; // start the timeline clickTimeline.play(); }); } // if timeline finises without receiving a second click, consider it a single click clickTimeline.setOnFinished(event -> { fireEvent(new FlightListEvents(FlightListEvents.FLIGHT_BUTTON_CLICKED, this.aircraft)); isClickTimelinePlaying = false; });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda