[RESOLVIDO]Em SWT não existe o evento "MousePressed" ?  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

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 ?

This message was edited 1 time. Last update was at 18/06/2009 08:19:05

thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

http://www.coderanch.com/t/345698/Swing-AWT-SWT-JFace/java/mousePressed
[WWW]
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

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.
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

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".
[WWW]
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

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.
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/MouseListenerExample.htm

Os nomes dos eventos são mouseDown e mouseUp.
[WWW]
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

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.
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

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.
[WWW]
Alien
What is classpath?
[Avatar]
Membro desde: 17/06/2009 12:26:54
Mensagens: 9
Offline

Desculpe incomodar sou novo no forum, alguem poderia me ajudar, postei um topico sobre maskformatter....
[MSN]
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

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.


 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team