SWT中怎么检测到button的一直按状态
我想做个button,一直按住它,上面的canvas 图形可以一直向一个方向移动,但我怎么查都查不到怎么检测到button的"一直按"状态或事件. mouseDown不行,按住只能做一个工作,也就是移动一下.多谢各位,小弟真的很急!
我想做个button,一直按住它,上面的canvas 图形可以一直向一个方向移动,但我怎么查都查不到怎么检测到button的"一直按"状态或事件. mouseDown不行,按住只能做一个工作,也就是移动一下.多谢各位,小弟真的很急!
但是我用mouseDown,只有按下的时候才做件事情
final Button buttonPhotoBack = new Button(compositePhoto, SWT.NONE);
buttonPhotoBack.addMouseListener(new MouseAdapter() {
public void mouseDown(final MouseEvent e) {
System.out.print(1);
}
});这是代码,如果按下鼠标,是打印一个1,再按才再打.我想要的是按下鼠标会一直打印1,抬起鼠标打印就停止了.
多谢!
int flag=1;
final Button buttonPhotoBack = new Button(compositePhoto, SWT.NONE);
buttonPhotoBack.addMouseListener(new MouseAdapter() {
public void mouseDown(final MouseEvent e) {
while(flag==1){
System.out.print(1);
}
}
});
mouseUp的时候把flag设为0;
如果不行的话 可以考虑用线程来做。
public void run() {
buttonPhotoBack.addMouseListener(new MouseAdapter() {
public void mouseUp(final MouseEvent e)
{
done = true;
}
});
}
};
final Thread applicationThread = new Thread("applicationThread") {
public void run() {
display.syncExec(r);
}
};
applicationThread.start(); buttonPhotoBack = new Button(compositePhoto, SWT.NONE);
buttonPhotoBack.addMouseListener(new MouseAdapter() {
public void mouseDown(final MouseEvent e) {
done = false;
//if (display.getThread() == Thread.currentThread()) { //System.out.println(display.getThread().getName());
//}
while(done == false){
System.out.println(22);}
//System.out.println(Thread.currentThread().getName());
}
public void mouseUp(final MouseEvent e) {
}
});
还是不行...
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.*;import sun.awt.resources.awt;
public class DownButton{
public static void main(String[] args)
{
AboutFrame frame =new AboutFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class AboutFrame extends JFrame implements Runnable
{
private int flag;
private Thread thread1 = new Thread(this);
public AboutFrame()
{
setSize(400,300);
setResizable(false);
setTitle("关于");
Toolkit tk=Toolkit.getDefaultToolkit();
Image ff=tk.getImage("false.gif");
setIconImage(ff);
Dimension screenSize=tk.getScreenSize();
setLocation((screenSize.width-400)/2,(screenSize.height-300)/2);
flag=0;
JPanel panel = new JPanel();
Button buttonPhotoBack = new Button("downed");
buttonPhotoBack.addMouseListener(new MouseAdapter() {
public void mousePressed( MouseEvent e) {
System.out.println(1);
flag = 1;
runThread();
}
});
buttonPhotoBack.addMouseListener(new MouseAdapter() {
public void mouseReleased( MouseEvent e) {
flag = 0;
stopThread();
}
});
panel.add(buttonPhotoBack);
Container con=getContentPane();
con.add(panel);
} public void runThread(){
thread1.start();
try {
thread1.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void stopThread(){
thread1.stop();
}
public void run() {
while(flag == 1){
System.out.println("1");
}
}
}刚学swing ,第一次用线程,有很多问题在里面,试试