Bom pessoal, preciso ter esse evento na minha aplicação.
Alguem já implementou um mousePressed ()?
Enquanto o mouse estiver pressionado faça alguma coisa. Não tem esse método na API do SWT ?
[RESOLVIDO]Em SWT não existe o evento "MousePressed"?
9 Respostas
Obrigado pela ajuda Thingol, mas estou trabalhando com SWT, e lá não tem a solução.
Já havia testado métodos identicos aos que eles postaram lá.
Em um loop testando se o MouseDown()//Evento do SWT qdo o Botão está pressionado ele simplesmente fica preso.
Você não pode fazer isso que você está pensando.
Em vez de ficar em um loop esperando alguma coisa - ISSO É PROIBIDO EM PROGRAMAÇÃO ORIENTADA A EVENTOS - , você tem de ter um estado ativado pelo evento “mouse pressed”, onde você faz alguma coisa, e que deve ser cancelado pelo evento “mouse released”.
MAS a grande questão é como setar o mousePressed(). Que tipo de ação determina que o mouse está clicado ?
Não consigo capturar isso.
http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/MouseListenerExample.htm
Os nomes dos eventos são mouseDown e mouseUp.
Ja uso esses métodos.
O que vc diz em setar um estado ?
Se for o que entendi, eu teria que fazer algo “enquanto” tal estado esteja válido. E mesmo fazendo não funciona.
Em vez de fazer TUDO no próprio evento mouseDown, faça em outro lugar (talvez uma thread, quem sabe?) e nesse local você investiga o valor de uma flag (variável booleana), que será setada para “true” pelo mouseDown, e para “false” pelo mouseUp.
Por exemplo, digamos que você esteja fazendo um programa que faz um desenho na tela enquanto o mouse estiver pressionado. O tal “outro lugar” que deve fazer alguma coisa é o “mouseMove” de uma classe que implementa MouseMoveListener e que deve criar um desenho na tela só quando a tal variável tiver sido setada para “true” pelo mouseDown.
Desculpe incomodar sou novo no forum, alguem poderia me ajudar, postei um topico sobre maskformatter… :?:
Fala Thingol,
Resolvi a parada usando Timer(), e associando ao timer a execução de um outro método.
Ou seja, ao capturar o evento do mouse (MouseDown ou MouseUp) eu respectivamente starto o timer ou stopo o timer.
Dentro do timer eu faço o que deve ser feito e de quanto em quanto tempo.
Eu usei essa funcionalidade para criar o meu Spinner, que suporta qualquer tipo de dados (int,long,double ), e como no Spinner, ao se manter o mouse clicado sobre um dos botões do Spinner, ele vai incrementando ou decrementando a cada X tempo (setei para a cada 1/2 segundo).
Fiquei só meio decepcionado com SWT pois ele ao contrário do SWING tem poucos eventos de mouse.
Bom é isso, espero ter ajudado a comunidade.